1 概述
1.1 安裝 django
> pip install django
1.2 創(chuàng)建 django 項(xiàng)目
-
[File]
-[New Project...]
-[Django]
- 設(shè)置 Location 和 解釋器 -[create]
固定,不用動(dòng)的文件:
??? asgi.py:接收網(wǎng)絡(luò)請(qǐng)求(異步)
??? wsgi.py:接收網(wǎng)絡(luò)請(qǐng)求(同步)
重要,需要經(jīng)常操作的文件:
??? urls.py:URL和函數(shù)的對(duì)應(yīng)關(guān)系
??? settings.py:項(xiàng)目配置
1.3 創(chuàng)建 app
- 命令窗口執(zhí)行命令:
python manage.py startapp app01
(其中 app01 為自定義項(xiàng)目名)
固定,不用動(dòng)的文件:
??? admin.py:后臺(tái)管理
??? apps.py:app啟動(dòng)類
??? migrations:數(shù)據(jù)庫(kù)變更記錄
??? test.py:?jiǎn)卧獪y(cè)試
重要,經(jīng)常操作的文件:
??? models.py:對(duì)數(shù)據(jù)庫(kù)操作
??? views.py:函數(shù)(對(duì)應(yīng)上述 1.2 Django 項(xiàng)目中的 urls.py 文件)
2 啟動(dòng) Django
2.1 settings.py:注冊(cè) app
2.2 view.py:URL和視圖對(duì)應(yīng)
2.3 啟動(dòng) Django
> # 指定IP地址和端口
> python manage.py runserver 127.0.0.1:8080
2.4 訪問
3 快速上手
3.1 templates:html 模板
3.2 static:靜態(tài)文件
3.3 模板語(yǔ)法
views.py:
from django.shortcuts import render, HttpResponse
# Create your views here.
# 入?yún)?request 是必選項(xiàng)
def index(request):
return HttpResponse("Hello World!")
def user_list(request):
# 對(duì)應(yīng) settings.py 中的 'DIRS': [os.path.join(BASE_DIR, 'templates')]
# 若 settings.py 中設(shè)為 'DIRS': [] 則表示 app 目錄下的 templates
name = "張三"
roles = ["超級(jí)管理員", "管理員", "用戶"]
user_info = {"name": "張三", "salary": 10000, "role": "超級(jí)管理員"}
data_list = [
{"name": "張三", "salary": 10000, "role": "超級(jí)管理員"},
{"name": "李四", "salary": 30000, "role": "管理員"},
{"name": "王五", "salary": 20000, "role": "用戶"}
]
# k1-k4:自定義的 key,name、roles.. 為上述定義的值
return render(request,
"user_list.html",
{"k1": name,
"k2": roles,
"k3": user_info,
"k4": data_list})
user_list.html:
{% load static %} <!-- 導(dǎo)入 static 文件 -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> 模板語(yǔ)法 </h1>
<div>{{ k1 }}</div>
<hr/>
<!-- k2: 原樣顯示,k2.:顯示某項(xiàng) -->
<!-- 數(shù)組 -->
<div>{{ k2 }}</div>
<div>{{ k2.0 }}</div>
<div>{{ k2.1 }}</div>
<div>{{ k2.2 }}</div>
<div>
{% for item in k2 %}
<span>{{ item }}</span>
{% endfor %}
</div>
<hr/>
<!-- 字典 -->
{{ k3 }}
{{ k3.name }}
{{ k3.salary }}
{{ k3.role }}
<ul>
{% for key, value in k3.items %}
<li>{{ key }} = {{ value }}</li>
{% endfor %}
</ul>
<hr/>
<!-- 復(fù)合結(jié)構(gòu) -->
{{ k4 }}
{{ k4.0 }}
{{ k4.0.name }}
{% for item in k4 %}
<div>{{ item.name }} : {{ item.salary }}</div>
{% endfor %}
<hr/>
<!-- 條件判斷 -->
{% if k1 == "張三" %}
<h1> 我是張三 </h1>
{% elif k1 == "李四" %}
<h1> 我是李四 </h1>
{% else %}
<h1> 我是.. </h1>
{% endif %}
</body>
</html>
瀏覽器效果:
3.4 請(qǐng)求和響應(yīng)
view.py:
from django.shortcuts import render, HttpResponse, redirect
# Create your views here.
def request_response(request):
# request 是一個(gè)對(duì)象,封裝了用戶發(fā)送過來的所有請(qǐng)求相關(guān)數(shù)據(jù)
# 1.【請(qǐng)求】獲取請(qǐng)求的方式 GET/POST
print(request.method)
# 2.【請(qǐng)求】GET:在 URL 上傳遞值,速度快,但用戶可見
# 若瀏覽器輸入:http://127.0.0.1:8000/request_response?n=1&m=2
# 則此處輸出值:<QueryDict: {'n': ['1'], 'm': ['2']}>
print(request.GET)
# 3.【請(qǐng)求】POST:在 請(qǐng)求體 中傳遞值,用戶不可見
print(request.POST)
# 4.【響應(yīng)】將字符串的內(nèi)容返回給請(qǐng)求者
# return HttpResponse("返回內(nèi)容")
# 5.【響應(yīng)】讀取HTML的內(nèi)容 + 渲染(替換)
#return render(request, "request_response.html", {"title": "我來了"})
# 6.【響應(yīng)】重定向
return redirect("https:www.baidu.com")
templates 目錄下新建 request_response.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> 某些請(qǐng)求 {{ title }}</h1>
</body>
</html>
urls.py:文章來源地址http://www.zghlxwxcb.cn/news/detail-726648.html
from django.urls import path
from app01 import views
urlpatterns = [
# path('admin/', admin.site.urls),
path('index/', views.index),
path('user/list', views.user_list),
# 請(qǐng)求和響應(yīng)
path('request_response', views.request_response)
]
3.5 表單
views.py:
from django.shortcuts import render, HttpResponse, redirect
# Create your views here.
def login(request):
if request.method == "GET":
return render(request, "login.html")
# 如果是 POST 請(qǐng)求,則獲取用戶提交的數(shù)據(jù)
userName = request.POST.get("user")
passWord = request.POST.get("pwd")
if userName == 'admin' and passWord == "123":
return HttpResponse("登錄成功!")
else:
return render(request, "login.html", {"error_msg": "用戶名或密碼錯(cuò)誤"})
templates 目錄下新建 login.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>用戶登錄</h1>
<form action="/login/" method="post">
{% csrf_token %}
<input type="text" name="user" placeholder="用戶名">
<input type="password" name="pwd" placeholder="密碼">
<input type="submit" value="提交"> {{ error_msg}}
</form>
</body>
</html>
文章來源:http://www.zghlxwxcb.cn/news/detail-726648.html
urls.py:
"""
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
# path('admin/', admin.site.urls),
# 用戶登錄
path('login/', views.login)
]
到了這里,關(guān)于Python Django 詳解(基礎(chǔ))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!