Django學(xué)習(xí)記錄:初步認(rèn)識django以及實(shí)現(xiàn)了簡單的網(wǎng)頁登錄頁面的前后端開發(fā)
1、可以先刪去template文件夾,并在setting里面刪掉這一行
2、在pycharm中創(chuàng)建app:
3、啟動(dòng)app:編寫URL與視圖函數(shù)關(guān)系【urls.py】
? 編寫視圖函數(shù)【views.py】
? 啟動(dòng)pycharm項(xiàng)目
4、引用靜態(tài)文件
其中有兩個(gè)文件的導(dǎo)入:(jquery和bootstrap)
jquery:https://code.jquery.com/jquery-3.6.0.min.js 可以直接復(fù)制下來創(chuàng)建記事本保存并更改為js文件即可使用。
bootstrap:https://v3.bootcss.com/getting-started/#download 可以在該網(wǎng)站直接下載,但下載端在github。(有需要的也可以私信我)
模板語法
視圖函數(shù)的render內(nèi)部:
1.讀取含有模板語法的HTML文件
2.內(nèi)部進(jìn)行渲染(模板語法執(zhí)行并替換數(shù)據(jù)),最終得到只包含HTML標(biāo)簽的字符串。
3.將渲染(替換)哇長城的字符串返還給用戶瀏覽器
views.py下的代碼:
from django.shortcuts import render,HttpResponse
# Create your views here.
def index(request):
return HttpResponse("歡迎使用")
def user_list(request):
# 1.如果未刪除默認(rèn)setting中dirs那行代碼,則有限去項(xiàng)目根目錄的templates中尋找(提前先配置)【不配置就是無效】
# 2.根據(jù)app的注冊順序,在每個(gè)app下的templates目錄中尋找【更改設(shè)置后】
return render(request, "user_list.html")
def user_add(request):
return render(request, "user_add.html")
def tpl(request):
name = "餃子"
# 列表,元組與列表相同
role =["保安","CEO","管理員"]
# 字典
user_info={"name":"包子","salary":10000,"role":"CTO"}
data_list=[
{"name": "包子", "salary": 10000, "role": "CTO"},
{"name": "饅頭", "salary": 10000, "role": "CTO"},
{"name": "餛飩", "salary": 10000, "role": "CTO"},
]
return render(request, "tpl.html", {"n1":name, "n2":role,"n3":user_info,"n4":data_list})
tpl.html下的代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-621542.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>模板語法的學(xué)習(xí)</h1>
<div>{{ n1 }}</div>
<div>{{ n2 }}</div>
<div>{{ n2.0 }}</div>
<div>{{ n2.1 }}</div>
<div>{{ n2.2 }}</div>
<div>
{% for item in n2 %}
<span>{{ item }}</span>
{% endfor %}
</div>
<hr/>
{{ n3 }}
{{ n3.name }}
{{ n3.role }}
<ul>
{% for k,v in n3.items %}
<li>{{ k }}={{ v }}</li>
{% endfor %}
</ul>
<hr/>
{{ n4.0 }}
{{ n4.1.name }}
{% for item in n4 %}
<div>{{ item.name }} {{ item.salary }}</div>
{% endfor %}
<hr/>
{% if n1 == "餃子" %}
<h1>dadadadada</h1>
{% else %}
<h1>dududududu</h1>
{% endif %}
</body>
</html>
網(wǎng)頁端顯示:
請求和相應(yīng)
def sth(request):
# request是一個(gè)對象,封裝了用戶發(fā)送過來的所有請求相關(guān)數(shù)據(jù)
# 1.獲取請求方式 GET/POST
print(request.method)
# 2.在URL上傳遞值(即在網(wǎng)址后面添加:/sth/?n1=123&n2=999,則會(huì)傳回n1,n2對應(yīng)的值)
print(request.GET)
# 3.在請求體中提交數(shù)據(jù)
print(request.POST)
# 4. (響應(yīng))HttpResponse("返回內(nèi)容"),內(nèi)容字符串內(nèi)容返回給請求者
# return HttpResponse("返回內(nèi)容")
# 5.(響應(yīng))讀取HTML的內(nèi)容 + 渲染(替換) —> 字符串,返回給用戶瀏覽器
# return render(request,'sth.html',{"title":"來了"})
# 6.(響應(yīng))讓瀏覽器重定向到其他的頁面
return redirect("http://www.baidu.com")
登錄界面的編寫
def login(requset):
if requset.method == "GET":
return render(requset, "login.html")
# 如果是POST請求,獲取用戶提交的數(shù)據(jù)
# print(requset.POST)
username = requset.POST.get("user")
password = requset.POST.get("pwd")
if username == 'root' and password == "123":
# return HttpResponse("登陸成功")
return redirect("https://www.bbac.com.cn/cn/")
# 可刪去else,以省略嵌套。
else:
# return HttpResponse("登陸失敗")
return render(requset, 'login.html', {"error_msg": "用戶名或密碼錯(cuò)誤"})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>用戶登錄</h1>
<form method="post" action = "/login/">
{% csrf_token %}
<input type = "text" name = "user" placeholder="用戶名">
<input type = "password" name = "pwd" placeholder="密碼">
<input type = "submit" value="提交">
<span style="color:red;"> {{ error_msg }}</span>
</form>
</body>
</html>
登錄失?。簞t如下界面;登錄成功,則跳轉(zhuǎn)網(wǎng)頁。
課程來源:
2022 B站最詳細(xì)django3教程(django從入門到實(shí)踐)文章來源地址http://www.zghlxwxcb.cn/news/detail-621542.html
到了這里,關(guān)于Django學(xué)習(xí)記錄:初步認(rèn)識django以及實(shí)現(xiàn)了簡單的網(wǎng)頁登錄頁面的前后端開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!