1. 什麼是Django
Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MTV的框架模式,即模型M(Model),視圖V(View)和模版T(Template)。
使用這種架構,程序員可以方便、快捷地創建高品質、易維護、數據庫驅動的應用程序。
在Django框架中,還包含許多功能強大的第三方插件,使得Django具有較強的可擴展性。
Django的主要目的是簡便、快速的開發數據庫驅動的網站。它強調代碼複用,多個組件可以很方便的以“插件”形式服務於整個框架。
本文操作環境:
Python 3.7.1 (官網下載https://www.python.org/downloads/)
Django 3.0.2
(pip install django官網pip下載https://pypi.org/project/pip/#files)
2. 選擇創建項目路徑
2.1 創建mysite項目名和blog應用
選擇項目路徑有兩種情況:
1.打開cmd,cd+路徑。(打開cmd默認是C盤的,一般情況創建項目都不在C盤,例如在D:/test。那麼首先要切換到D盤,終端先輸入D:回車,再cd test回車)。
C:\Users\admin>D:
D:\>cd test
D:\test>
2.同樣是D:/test作爲項目目錄,打開D盤下的test文件夾,鼠標右鍵空白處在彈出的選項中點擊在此處打開命令窗口(這樣就直接在cmd打開test路徑了)。
D:\test>
3. 創建項目
注意是在D盤test目錄下輸入命令,test作爲項目目錄。
# 創建mysite項目
D:\test>django-admin startproject mysite
# 切換到mysite目錄
D:\test>cd mysite
# 創建blog應用
D:\test\mysite>python manage.py startapp blog
3.1 項目目錄結構爲:
3.2 項目目錄介紹:
manage.py:Django項目裏面的工具,通過它可以調用django shell和數據庫等。
mysite/
--- settings.py:包含了項目的默認設置,數據庫信息,調試標誌,還有其他設置,比如靜態文件、媒體文件的根目錄等。
--- urls.py :負責把URL配置模式映射到應用程序。
--- wsgi.py:用於項目部署。
blog /
--- admin.py:django 自帶admin後面管理,將models.py 中表映射到後臺。
--- apps.py:blog 應用的相關配置。
--- models.py:Django 自帶的ORM(對象關係映射),用於設計數據庫表。
--- tests.py:用於編寫Django單元測試。
--- veiws.py :視圖文件,用於編寫功能的主要處理邏輯。
3.3 setting.py配置文件,添加blog應用:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#新增的blog應用 由python manage.py startapp blog 生成的blog應用
'blog',
]
4. 初始化admin後臺數據庫
4.1 Python 自帶SQLite3數據庫,Django默認使用SQLite3數據庫,如果使用其它數據庫請在settings.py文件中設置
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Django使用mysql數據庫設置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'blog',
'USER':'root',
'PASSWORD':'123456',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}
4.2 Django默認幫我們做了很多事情,比如User、Session 這些都需要創建表來存儲數據,Django已經把這些模塊幫我們準備好了,我們只需要執行數據庫同步,把相關表生成出來即可:
D:\test\mysite>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
4.3 創建超級管理員帳號,登錄admin後臺,必須要有帳號
D:\test\mysite>python manage.py createsuperuser
Username (leave blank to use 'admin'): admin # 管理員帳號
Email address: [email protected] # email,任意輸入一個就行
Password: # 密碼,輸入的時候不顯示出來,其實輸入了
Password (again): # 重複密碼
#下面這段提示意思是,因爲我輸入的密碼是admin,過於簡單,測試階段可以用簡單密碼,實戰就需要複雜點,按要求設置,最少8個字符
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
#詢問你是否跳過密碼驗證,輸入y回車即可
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
5. 啓動項目,訪問admin後臺
D:\test\mysite>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
January 08, 2020 - 09:58:29
Django version 3.0.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
5.1 瀏覽器訪問:http://127.0.0.1:8000
默認是英文版本,設置中文後臺與時區:
setting.py文件下設置。
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
5.2 訪問Admin後臺:http://127.0.0.0:8000/admin,通過前面創建的超級管理員賬號登錄
5.3 登錄之後進入到後臺主頁面
到此,準備工作結束。
6. 設計Model(設計數據庫表)
6.1 設計blog表
打開blog目錄下的models.py文件,該類下的屬性對應數據庫字段。
from django.db import models
# Create your models here.
class BlogsPost(models.Model):
title = models.CharField(max_length = 150) # 博客標題
body = models.TextField() # 博客正文
timestamp = models.DateTimeField() # 創建時間
6.2 再次執行數據庫同步,因爲剛新增了數據模型表
會提示生成了0001_initial.py文件,該文件在blog應用下的_py_cache_文件下。
D:\test\mysite>python manage.py makemigrations blog
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model BlogsPost
6.3 把剛生成的0001_initial.py文件更新到數據庫
D:\test\mysite>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0001_initial... OK
6.4 通過Admin管理
通過Admin後臺來管理blog表數據。打開blog應用下的admin.py 文件。
from django.contrib import admin
from blog.models import BlogsPost
# Register your models here.
class BlogsPostAdmin(admin.ModelAdmin):
list_display = ['title', 'body', 'timestamp']
admin.site.register(BlogsPost, BlogsPostAdmin)
6.5 登錄Admin後臺添加blog
再次啓動項目(python manage.py runserver),訪問:http://127.0.0.1:8000/admin。
Django後臺主頁面上會多出Blog應用。
點擊Add添加數據。
Time後面獲取當前時間默認是不對的,相差了8小時。
在你的Django項目中setting.py找到TIME_ZONE配置,可以看到默認的是"UTC",這時需要把他更改爲我們所在的時區,進行如下設置:
TIME_ZONE = 'Asia/Shangha
就ok了
6.6 點擊SAVE 按鈕保存,博客編寫完成。
到此,數據部分已經搞定。
7. 創建視圖
7.1 創建視圖函數
打開blog應用下的views.py文件:
from django.shortcuts import render
from blog.models import BlogsPost
# Create your views here.
def blog_index(request):
blog_list = BlogsPost.objects.all() # 獲取所有數據
return render(request,'index.html', {'blog_list':blog_list}) # 返回index.html頁面
7.2 創建視圖對應的模版
在blog應用下創建templates目錄(blog/templates/),在目錄下創建首頁文件index.html,內容:(blog_list爲視圖view.py定義的變量)。
{% for blog in blog_list %}
<h2>{{ blog.title }}</h2>
<p>{{ blog.timestamp }}</p>
<p>{{ blog.body }}</p>
{% endfor %}
循環視圖view.py文件渲染到頁面的blog_list集合,顯示標題,創建時間和正文。
blog_list = BlogPost.objects.all(),獲取數據庫裏面表中所有的BlogPost對象。
render返回一個頁面(index.html),順帶把數據庫中查詢出來的所有博客內容(blog_list)也一併返回。
7.3 創建blog應用的url模式
在mysite/urls.py文件裏添加blog的url:
from django.contrib import admin
from django.urls import path
from blog import views
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', views.blog_index),
]
7.4 再次終端cmd啓動服務
cmd命令python manage.py runserver,訪問(http://127.0.0.1:8000/blog/)。
到此,項目開發完成
秒變大牛,就是這麼簡單~
每週每日,分享Python實戰代碼,入門資料,進階資料,基礎語法,爬蟲,數據分析,web網站,機器學習,深度學習等等。
微信羣(關注「Python家庭」一起輕鬆學Python吧)
QQ ②羣(983031854)