Django入門,快速搭建論壇 | Web篇

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 testD:\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 definitionINSTALLED_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/#databasesDATABASES = {    '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 migrateOperations to perform:  Apply all migrations: admin, auth, contenttypes, sessionsRunning 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 createsuperuserUsername (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]: ySuperuser created successfully.

5.  啓動項目,訪問admin後臺

D:\test\mysite>python manage.py runserverWatching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).January 08, 2020 - 09:58:29Django 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 blogMigrations for 'blog':  blog\migrations\0001_initial.py    - Create model BlogsPost

6.3  把剛生成的0001_initial.py文件更新到數據庫

D:\test\mysite>python manage.py migrateOperations to perform:Apply all migrations: admin, auth, blog, contenttypes, sessionsRunning migrations:Applying blog.0001_initial... OK

6.4  通過Admin管理

通過Admin後臺來管理blog表數據。打開blog應用下的admin.py 文件。

from django.contrib import adminfrom 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 renderfrom 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 adminfrom django.urls import pathfrom blog import viewsurlpatterns = [    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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章