Django初探一

meryin發表於2017-12-14

小白的Django學習筆記。本人隨便寫寫,本人用的mac+Python3.6。

一、環境搭建

1. 安裝Django

由於我的執行環境是mac+python3.6,所以我用的是Django1.11版本:

pip install Django==1.11
複製程式碼

其他版本如下:

Django初探一

2. 建立專案

本人建立的專案名稱叫:blogDemo,所以程式碼如下:

django-admin startproject blogDemo
複製程式碼

3. 建立應用

然後進入和manage.py同級的專案資料夾,用命令建立應用myblog:

python manage.py startapp myblog
複製程式碼

啟動伺服器:

python manage.py runserver
複製程式碼

啟動伺服器後,獲取到的地址,就是本專案根地址: Django version 1.11, using settings 'blogDemo.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 改變埠:

python manage.py runserver 9999(埠號)
複製程式碼

二、hello world

1. 專案結構介紹
Django初探一

專案檔案下的settings.py是專案的配置檔案,包括是否debug模式,APP註冊,語言設定等等。我把專案的根地址改成localhost,便於訪問。在setting.py中ALLOWED_HOSTS = ['localhost']。urls.py是專案的url檔案,所有的url都要在urlpatterns註冊。其他的檔案暫時不管。 應用檔案下的的admin.py是後臺管理系統的管理檔案。models.py相當於MVC中的M檔案,一個類對應一張表,Django直接用類來運算元據庫。views.py是主要響應檔案,每個響應對應一個函式,函式必須返回一個響應,每個響應函式對應一個url。其他的檔案暫時不管,一時記不住不管,往下寫程式碼就行。

2. 開始寫程式碼

所以的應用必須在settings.py中註冊:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myblog'
]
複製程式碼

然後在views.py中寫頁面資料程式碼:

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
	return HttpResponse('hello world')
複製程式碼

所有的頁面都要在urls.py中註冊:

from django.conf.urls import url
from django.contrib import admin
from myblog import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
]
複製程式碼

然後開啟網址localhost:8000/index效果就出來啦,當然前提得是你啟動了伺服器python manage.py runserver。

3. url註冊

由於專案的複雜性,所有應用的url都在urls.py中註冊,容易重名,不易讀,也不便管理,所以在應用myblog資料夾下新建一個urls.py用於管理本應用的url。專案的urls.py檔案程式碼如下:

from django.conf.urls import url,include
from django.contrib import admin


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^myblog/', include('myblog.urls')),
]
複製程式碼

然後在應用資料夾下的urls.py中程式碼如下:

from django.conf.urls import url
from . import views

urlpatterns = [

    url(r'^index/$', views.index),
]
複製程式碼

然後開啟網址**localhost:8000/myblog/index/**測試。

三、templates

1. 建立template檔案:index.html

由於Django是由settings.py中的INSTALLED_APPS應用新增順序來查詢templates,所以不同應用下的html檔案重名後會發生衝突。解決方案是,在應用目錄的templates下,建立與應用同名的資料夾,把html檔案放在此資料夾裡。

2.顯示index.html

在views.py中返回此介面:

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
	return render(request,'myblog/index.html',{'param1':'hello 你好'})
複製程式碼

在index.html中顯示引數param1的資料:<h1>{{param1}}}</h1>,引數的資料顯示用{{}}括起來。更多資料點這裡

四、models

1. 在APP目錄中的models.py中建立類,繼承models.Model。

from django.db import models

class Artical(models.Model):
	title = models.CharField(max_length=32)
	content = models.TextField(max_length=100)
複製程式碼

更多變數的屬性在這裡

2. 生成資料表

先輸入命令:python manage.py makemigrations然後再輸入命令python manage.py migrate。 完成資料遷移後應用目錄中會出現migrations的資料夾,裡面有0001_initial.py檔案,這個檔案就是Artical模型的初始化檔案,你可以在終端用命令python manage.py sqlmigrate myblog 0001檢視sql語句。

3 . 插入並顯示資料

python manage.py migrate 過後,檔案中多了一個db.sqlite3的資料庫。除了用開啟資料庫認為新增資料,還可以程式碼新增,詳細資料點這裡。在models.py中程式碼如下:


class ArticalManager(models.Manager):
    def create_artical(self,title,content):
        artical =self.create(title = title,content = content)
        return artical	
class Artical(models.Model):
	title = models.CharField(max_length=32)
	content = models.TextField(max_length=100)
	objects = ArticalManager()
複製程式碼

然後views.py中實現資料響應:

from django.shortcuts import render
from django.http import HttpResponse
from . import models

def index(request):
	articals = models.Artical.objects.all()  #獲取全部資料
    #artical = models.Artical.objects.get(pk=1)  獲取第一行資料
	if len(articals) == 0:
		artical = models.Artical.objects.create_artical("這是標題","這是內容")
		artical.save()
		articals = models.Artical.objects.all()
	return render(request,'myblog/index.html',{'param1':'我的首頁','articals':articals})
複製程式碼

在index.html中顯示資料:

<body>
	<h1>{{param1}}</h1>
	{% for artical in articals %}
		<a href="">{{artical.title}}</a>
	{% endfor %}
</body>
複製程式碼

五、admin操作

1. 建立使用者

輸入命令python manage.py createsuperuser建立超級使用者,然後登陸後臺管理系統localhost:8000/admin/。就看到以下介面:

Django初探一
為什麼沒有我的Artical表呢,因為Artical沒有在admin註冊,所以admin並不知道它。在admin.py中寫下程式碼:admin.site.register(models.Artical)然後首頁就有了Artical表,點進Artical詳情後顯示的是Artical object。如果想要顯示標題和其他欄位,程式碼如下:

from django.contrib import admin
from . import models

class ArticalAdmin(admin.ModelAdmin):
	list_display = ('title','content')
admin.site.register(models.Artical,ArticalAdmin)
複製程式碼

然後效果如下:

Django初探一

2. 改變語言

後臺管理系統一般預設為英語,想中文顯示,在settings.py中把LANGUAGE_CODE 改成 'zh_Hans' 就好啦。

3. 過濾器

比如你在Artical的後臺管理介面,只想看某一天的記錄,那麼我們在models.py中新增一個欄位pub_time = models.DateField(null=True),然後在admin.py中的ArticalAdmin類中新增list_filter = ('pub_time',),最後要進行資料遷移python manage.py makemigrationspython manage.py migrate。效果如下:

Django初探一

最後,還有好多,懶得寫了。

相關文章