get獲取數據,post發送數據。
Django生命週期:
->url對應關係(匹配)->視圖函數->返回用戶字符串
->url對應關係(匹配)->視圖函數->打開一個html文件,讀取內容
redirect(‘只能填url’)
HttpResponse(‘字符串’)
render(request, “html模版的路徑”)
1、request.POST['username']
2、request.POST.get('username', None)
選2
1存在一個問題,如果username不存在,會報錯
1、安裝
pip3 install django
2、創建工程
django-admin startproject project_name
3、啓動
啓動前需要先進入剛剛創建的項目中,最後一個參數不填就是默認127.0.0.1:8000,可以修改端口
python3 manage.py runserver 127.0.0.1:8000
啓動完成之後,打開網址,輸入127.0.0.1:8000,看到如下就說明成功
4、增加內容
Django程序已經建成功了,下面來做一些修改,在目錄下新建一個文件夾,新建的文件夾下再新建一個文件s1.py
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse("OK")
修改urls.py文件
from django.contrib import admin
from django.urls import path
from laoniu import s1
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', s1.index)
]
重新啓動,再來運行
5、django目錄
project_name
project_name # 對整個程序進行配置
init.py
settings.py # 配置文件
url.py # url對應關係
wsgi.py # 一套規則,一套接口,本質上幫助創建socket,遵循wsgi規範,產品上線不用默認的,用uwsgi+ngnix
manage.py # 管理Django程序,有一下命令:1、python3 manage.py 2、python3 manage.py startapp ** 3、python3 manage.py makemigrations 4、python3 manage.py migrate
6、創建app
python3 manage.py startapp cmdb # csdb是app的名字
創建後的相應路徑如下所示
cmdb
migrations: 數據操作記錄(修改表結構)
__init__: python2中必須存在,不然導入文件時會出錯,python3無所謂
admin: django提供的後臺管理
apps: 配置當前app
models: ORM,寫指定的類,通過命令創建數據庫結構
tests: 單元測試
views: 業務代碼
在setting.py中添加該app的信息
這樣就創建了一個app文件夾,接下來把我們的業務邏輯的代碼放在cmdb的文件中,如下
from django.shortcuts import render
# Create your views here.
from django.shortcuts import HttpResponse
def home(request):
return HttpResponse('<h1>Hello_View</h1>')
修改urls.py文件如下,
from django.contrib import admin
from django.urls import path
from laoniu import s1
from cmdb import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', s1.index),
path('h.html/', views.home)
]
運行,可以得到如下結果
7、創建靜態文件和模版文件
在Django目錄下創建兩個文件夾static和templates用來存放靜態文件和模版文件
8、在settings.py中添加配置信息
靜態文件配置需要添加如下代碼
STATICFILES_DIR = (
os.path.join(BASE_DIR, "static"),
)
注:只有這樣,靜態文件在我們的項目中才會起作用。
模版路徑需要在TEMPLATES中添加如下代碼
注:這樣我們就不需要自己寫邏輯去去讀html文件中的內容,Django的render會幫助我們處理該過程。
還有一步,在這裏,先註釋settigns.py的csrf(跨棧請求僞造),防止報錯
9、模版語言
views.py
return render(request, "index.html", {
'currrent_user': 'seth',
'user_list': ['seth', 'bob'],
'user_dict': {'k1':'v1','k2':'v2'}
})
html
<a>{{current_user}}</a>
<a>{{user_list.0}}</a>
<a>{{user_dict.k1}}</a>
{% for item in user_list %}
{% endfor %}
{% if age %}
<a>have age</a>
{% if age > 16 %}
<a>old boy</a>
{% endif %}
{% else %}
<a>no age</a>
{% endif %}
10、路由系統
項目地址:
https://github.com/Stark-Xue/didi