天天看點

python web項目_Django快速搭建論壇項目 | Python之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、項目目錄結構為:

python web項目_Django快速搭建論壇項目 | Python之Web篇

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'
           
python web項目_Django快速搭建論壇項目 | Python之Web篇

5.2、通路Admin背景:http://127.0.0.0:8000/admin,通過前面建立的超級管理者賬号登入

python web項目_Django快速搭建論壇項目 | Python之Web篇

5.3、登入之後進入到背景首頁面

python web項目_Django快速搭建論壇項目 | Python之Web篇

到此,準備工作結束。

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添加資料。

python web項目_Django快速搭建論壇項目 | Python之Web篇

Time後面擷取目前時間預設是不對的,相差了8小時。

python web項目_Django快速搭建論壇項目 | Python之Web篇

在你的Django項目中setting.py找到TIME_ZONE配置,可以看到預設的是"UTC",這時需要把他更改為我們所在的時區,進行如下設定:

TIME_ZONE = 'Asia/Shangha
           

就ok了

6.6、點選SAVE 按鈕儲存,部落格編寫完成。

python web項目_Django快速搭建論壇項目 | Python之Web篇

到此,資料部分已經搞定。

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項目_Django快速搭建論壇項目 | Python之Web篇

到此,項目開發完成

python web項目_Django快速搭建論壇項目 | Python之Web篇
python web項目_Django快速搭建論壇項目 | Python之Web篇
python web項目_Django快速搭建論壇項目 | Python之Web篇

(完)

看完本文有收獲?請轉發朋友圈分享給更多人吧

關注「Python家庭」一起輕松學Python

python web項目_Django快速搭建論壇項目 | Python之Web篇
python web項目_Django快速搭建論壇項目 | Python之Web篇
python web項目_Django快速搭建論壇項目 | Python之Web篇
python web項目_Django快速搭建論壇項目 | Python之Web篇

掃碼關注我們

原創不易,有幫助點個 “在看” 呗

python web項目_Django快速搭建論壇項目 | Python之Web篇
python web項目_Django快速搭建論壇項目 | Python之Web篇

繼續閱讀