1. 程式人生 > >python之Django學習筆記(二)---Django從工程創建、app創建到表建模在頁面的顯示

python之Django學習筆記(二)---Django從工程創建、app創建到表建模在頁面的顯示

ins req sql charm 如果 步驟 spa use view

創建工程

在命令行中切換目錄至需要創建工程的目錄,然後在命令行中輸入如下命令創建djangoTestPro工程

D:\PycharmProjects\untitled\MyTestProject>python D:\Python37\Lib\site-packages\Django-2.1.5-py3.7.egg\django\bin\django-admin.py startproject djangoTestPro
或者如下命令
D:\PycharmProjects\untitled\MyTestProject>django-admin startproject djangoTestPro

因為使用的pip install django安裝的,django-admin.py不能直接使用,但可以使用django-admin這個命令

可以看到創建了如下目錄結構的工程

技術分享圖片

下面介紹下這些文件的作用:

settings.py:工程的一些配置信息

urls.py:用來匹配接收的url,轉換為函數後再到各個app的views.py中查對應函數

wsgi.py:路由選擇

manage.py:創建工程後,命令都是通過這個文件來執行

創建APP

在命令行中切換至djangoTestPro工程中,然後輸入如下命令創建djangoTestApp

D:\PycharmProjects\untitled\MyTestProject\djangoTestPro>python manage.py startapp djangoTestApp

可以看到創建了如下APP的目錄

技術分享圖片

下面介紹下app中的文件作用:

admin.py:控制app中的樣式

apps.py

models.py:數據庫建模文件

tests.py:單元測試使用

views.py:url函數,返回對應的url給前端

一個工程裏面支持創建N個app,創建app之後需要在工程的settings.py中添加對應的app,不然會找不到這個app,需要在工程的settings.py中增加對應的app:

技術分享圖片

創建數據庫

在app的models.py中創建一個數據庫(sqlite3)如下代碼

SEX_CHOICE = (
    (
F,Female), (M,male) ) # Create your models here. class Student(models.Model): No = models.CharField(學號,max_length = 10) Name = models.CharField(姓名,max_length = 20) Sex = models.CharField(性別,max_length = 1,choices = SEX_CHOICE,default = M) Age = models.IntegerField(年齡)

然後在命令行中輸入以下命令來生成數據庫配置文件

D:\PycharmProjects\untitled\MyTestProject\djangoTestPro>python manage.py makemigrations
Migrations for ‘djangoTestApp‘:
djangoTestApp\migrations\0001_initial.py
- Create model student

看到已經創建了student模型,這個文件在app的migrations目錄下,這時根據配置文件寫入到數據庫中:

D:\PycharmProjects\untitled\MyTestProject\djangoTestPro>python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, djangoTestApp, 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 djangoTestApp.0001_initial... OK
  Applying sessions.0001_initial... OK

沒有報錯誤,則表示已經在數據庫中增加了這個表

創建超級管理員

在命令行中輸入下面命令創建超級管理員

D:\PycharmProjects\untitled\MyTestProject\djangoTestPro>python manage.py createsuperuser
Username (leave blank to use 18106179): watertaro
Email address: 70907583@qq.com
Password:
Password (again):
Superuser created successfully.

按照步驟操作即可完成超級管理員的創建

啟動服務

D:\PycharmProjects\untitled\MyTestProject\djangoTestPro>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
March 19, 2019 - 15:36:10
Django version 2.1.5, using settings djangoTestPro.settings
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

沒有錯誤即啟動成功,這時就可以根據上述給出的地址http://127.0.0.1:8000來訪問了,這個地址是默認的地址,只是一個訪問頁面

如果要使用其他端口啟動,可以使用如下命令:

D:\PycharmProjects\untitled\MyTestProject\djangoTestPro>python manage.py runserver 127.0.0.1:8800

若當前環境有多個IP且多個IP都可以訪問,可以寫成如下:

D:\PycharmProjects\untitled\MyTestProject\djangoTestPro>python manage.py runserver 0.0.0.0:8800

可以到工程的urls.py中查看配置的url,默認只有一個admin/,我們可以使用http://127.0.0.1:8000/admin/來訪問:

技術分享圖片

使用創建的超級管理員登入進去,發現沒有創建的表student,因為表創建後還需要註冊

註冊表

在工程的admin.py中加入如下代碼

from django.contrib import admin
from .models import Student

# Register your models here.

admin.site.register(student)

其實就增加了倆行,一行是導入Student,一行是註冊student表,這時再打開http://127.0.0.1:8000/admin就可以看到student

技術分享圖片

新增加一個student信息後,只顯示了student object,感覺很醜

技術分享圖片

可以在admin.py中指定顯示哪些列,代碼如下:

from django.contrib import admin
from .models import student

# Register your models here.

class StudentAdmin(admin.ModelAdmin):
    list_display = (‘No‘,‘Name‘,‘Sex‘,‘Age‘,)

admin.site.register(student,StudentAdmin)

添加好代碼後,刷新頁面顯示如下(是不是好看多了?)

技術分享圖片

從上面操作來看,用戶請求後先匹配到url(urls.py),然後找到對應函數,通過函數(views.py)到數據庫中(models.py)查找數據,然後返回給前端

python之Django學習筆記(二)---Django從工程創建、app創建到表建模在頁面的顯示