Django回憶錄

Django使用回憶:html

一、安裝django:python

pip install django==1.9

二、建立項目及應用:mysql

django-admin startproject web

django-admin startap blog

三、配置數據庫、二級url:web

web/setting.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

...

DATABASES = {
    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'test_blog',
        'USER':'ahaii',
        'PASSWORD':'123456',
        'HOST':'',
        'PORT':'',
    }
}
web/urls.py: 
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/', include('blog.urls')),
]
blog/urls.py: from blog import views

urlpatterns = [
    url(r'^$', views.index),
]
blog/views.py: from django.shortcuts import render,HttpResponse

# Create your views here.

def index(request):
        return HttpResponse('Hello Django')

四、建立數據庫模型:sql

blog/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)

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ['-date_time']

五、同步數據庫:shell

python manage.py makemigrations
python manage.py migrate

其中,makemigrations是掃描變更後在本地的app目錄下的migrations包裏生成遷移用的代碼,可是並不會執行。migrate則是根據migrations包下的代碼操做數據庫,但並不檢查models的修改變更。因此更改models後應先makemigrations而後migrate。數據庫

六、建立超級用戶:django

python manage.py createsuperuser

七、利用python shell交互模式操做數據庫:session

python manage.py shell

>>>from blog.models import Article
>>>Article.objects.create(title='...',category='...',content='...')//插入數據
>>>Article.objects.all()//查詢全部記錄,返回列表
>>>Article.objects.get(id=1)//查詢第一條
>>>a=Article.objects.get(title='Car')
>>>a.content='The traffice is so busy!'//修改內容
>>>>a.save()//寫入數據庫

八、動態url:(獲取url中的參數)app

blog/views.py: 
def detail(request,args):
post = Article.objects.all()[int(args)] //默認輸入爲字符串,轉換爲整型,列表索引
str = ('title=%s,category=%s,content=%s') %(post.title,post.category,post.content)
return HttpResponse(str)
blog/urls.py:

urlpatterns = [
    url(r'^$', views.index),
    url(r'(?P<args>\d+)/$',views.detail)// \w+可匹配數字和字母
]

九、使用模版:

web項目下建立templates/test.html,設置模版路徑:

web/setting:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR,'templates')
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
templates/test.html: <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Just for test template</title>
    <style>
        body{
            background-color: red;
        }
        strong{
            color:lightseagreen;
        }
    </style>
</head>
<body>
    <h1>Hello Django</h1>
    <strong>{{ time }}</strong>
</body>
</html>
blog/views:
from datetime import datetime def template(request): return render(request,'test.html',{'time':datetime.now()})
blog/urls:

urlpatterns = [
    url(r'template/$',views.template)
]

 

以上目錄結構:

web-|
    |-blog
    |-manage.py
    |-templates
    |-web

 

話說Django數據庫操做中get和filter的區別:

一、get:從數據庫中找到匹配的一條,返回一個知足查詢條件的對象。若沒有查到符合條件的數據,會發生錯誤。

二、filter:從數據庫中找到匹配的一條,返回一個知足查詢條件的列表。若沒有查到符合條件的數據,會返回一個口列表[]。

相關文章
相關標籤/搜索