Django環境配置

Django安裝 html

#安裝最新版本的Django
$ pip install  django 
#或者指定安裝版本
pip install -v django==1.7.1
  • 項目建立
    $ django-admin startproject my_blog
  • 創建Django app
    $ python manage.py startapp article
  • 運行程序
    $ python manage.py runserver

pip安裝python模塊權限報錯解決
windows下pip安裝python模塊時報錯總結 - 溫柔易淡 - 博客園 java

pycharm運行django程序
配置: runserver 0.0.0.0:8000
參考:pycharm上運行django服務器端、以及建立app方法 python

diango使用mysql數據庫

設置數據庫
Django項目建成後, 默認設置了使用SQLite數據庫, 在my_blog/my_blog/setting.py中能夠查看和修改數據庫設置: mysql

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'csvt',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '',
        'PORT': '',

    }
}

同時要在init.py中寫如下代碼 sql

import pymysql
pymysql.install_as_MySQLdb()

pymysql的安裝 shell

pip install PyMySQL

建立models
在my_blog/article/models.py下編寫以下程序:數據庫

from django.db import models

# Create your models here.
class Article(models.Model) :
    title = models.CharField(max_length = 100)  #博客題目
    category = models.CharField(max_length = 50, blank = True)  #博客標籤
    date_time = models.DateTimeField(auto_now_add = True)  #博客日期
    content = models.TextField(blank = True, null = True)  #博客文章正文

    #python2使用__unicode__, python3使用__str__
    def __str__(self) :
        return self.title

    class Meta:  #按時間降低排序
        ordering = ['-date_time']

其中str(self) 函數Article對象要怎麼表示本身, 通常系統默認使用 來表示對象, 經過這個函數能夠告訴系統使用title字段來表示這個對象django

  • CharField 用於存儲字符串, max_length設置最大長度
  • TextField 用於存儲大量文本
  • DateTimeField 用於存儲時間, auto_now_add設置True表示自動設置對象增長時間

同步數據庫 windows

$ python manage.py makemigrations
$ python manage.py migrate

Django Shell
如今咱們進入Django中的交互式shell來進行數據庫的增刪改查等操做ruby

$ python manage.py shell
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct  5 2014, 20:42:22)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
這裏進入Django的shell和python內置的shell是很是相似的
>>> from article.models import Article
>>> #create數據庫增長操做
>>> Article.objects.create(title = 'Hello World', category = 'Python', content = '咱們來作一個簡單的數據庫增長操做')
<Article: Article object>
>>> Article.objects.create(title = 'Django Blog學習', category = 'Python', content = 'Django簡單博客教程')
<Article: Article object>

>>> #all和get的數據庫查看操做
>>> Article.objects.all()  #查看所有對象, 返回一個列表, 無對象返回空list
[<Article: Article object>, <Article: Article object>]
>>> Article.objects.get(id = 1)  #返回符合條件的對象
<Article: Article object>

>>> #update數據庫修改操做
>>> first = Article.objects.get(id = 1)  #獲取id = 1的對象
>>> first.title
'Hello World'
>>> first.date_time
datetime.datetime(2014, 12, 26, 13, 56, 48, 727425, tzinfo=<UTC>)
>>> first.content
'咱們來作一個簡單的數據庫增長操做'
>>> first.category
'Python'
>>> first.content = 'Hello World, How are you'
>>> first.content  #再次查看是否修改爲功, 修改操做就是點語法
'Hello World, How are you'

>>> #delete數據庫刪除操做
>>> first.delete()
>>> Article.objects.all()  #此時能夠看到只有一個對象了, 另外一個對象已經被成功刪除
[<Article: Article object>]  

Blog.objects.all()  # 選擇所有對象
Blog.objects.filter(caption='blogname')  # 使用 filter() 按博客題目過濾
Blog.objects.filter(caption='blogname', id="1") # 也能夠多個條件
#上面是精確匹配 也能夠包含性查詢
Blog.objects.filter(caption__contains='blogname')

Blog.objects.get(caption='blogname') # 獲取單個對象 若是查詢沒有返回結果也會拋出異常

#數據排序
Blog.objects.order_by("caption")
Blog.objects.order_by("-caption")  # 倒序

#若是須要以多個字段爲標準進行排序(第二個字段會在第一個字段的值相同的狀況下被使用到),使用多個參數就能夠了
Blog.objects.order_by("caption", "id")

#連鎖查詢
Blog.objects.filter(caption__contains='blogname').order_by("-id")

#限制返回的數據
Blog.objects.filter(caption__contains='blogname')[0]
Blog.objects.filter(caption__contains='blogname')[0:3]  # 能夠進行相似於列表的操做
相關文章
相關標籤/搜索