日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Django基础(四)

發(fā)布時(shí)間:2025/6/17 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django基础(四) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

分頁(yè)器

?

#views.py from django.core.paginator import Paginator, EmptyPage, PageNotAnIntegerdef add(request):Booklist=[]for i in range(100):book_obj=models.Book(name="book"+str(i),price=60+i*i)boklist.append(book_obj)models.Book.objects.bulk_create(Booklist)return HttpRenponse("OK")def index(request):book_list=models.Book.objects.all()paginator=Paginator(book_list,8) # 8 是每頁(yè)的記錄數(shù)'''print(paginator.count) # 總的數(shù)據(jù) 100print(paginator.num_pages) # 總的頁(yè)數(shù) 13print(paginator.page_range) # 頁(yè)數(shù)范圍 range(1,14)'''page_range = paginator.page_range try:num = int(request.GET.get("p",1))page = paginator.page(num) except Exception as e:page = paginator.page(1)'''print(page.next_page_number())print(page.previous_page_number())print(page.has_next())print(page.has_previous())'''return render(request,"index.html",{"page":page,"page_range":page_range,"num":num})

?

#index.html <html> <head><script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script><link rel="stylesheet" href="/static/dist/css/bootstrap.css"> </head> <style></style> <body> <ul>{% for i in page %}<li>{{ i.name }}</li> {% endfor %} </ul><nav aria-label="Page navigation"><ul class="pagination">{% if page.has_previous %}<li><a href="/?p={{ page.previous_page_number }}">上一頁(yè)</a></li>{% else %}<li class="disabled"><a href="#">上一頁(yè)</a></li>{% endif %}{% for i in page_range %}{% if i==num %}<li class="active"><a href="/?p={{ i }}">{{ i }}</a></li>{% else %}<li><a href="/?p={{ i }}">{{ i }}</a></li>{% endif %}{% endfor %}{% if page.has_next %}<li><a href="/?p={{ page.next_page_number }}">下一頁(yè)</a></li>{% else %}<li class="disabled"><a href="#">下一頁(yè)</a></li> {% endif %} </ul> </nav> </body> </html>

?

自定義分頁(yè)器

Cookie &?Session

?

cooike是保留在客戶端(瀏覽器)的婦女放鍵值對(duì)的容器
session是保留在服務(wù)器上的容器 {}

#models.py class UserInfo(models.Model):name=models.CharField(max_length=32)pwd=models.CharField(max_length=32) #urls.py url(r'^login/',views.login) url(r'^index/',views.index) url(r'^logout/',views.log_out) url(r'^addBook/',views.addBook) #views.py from app01 import models def login(request):if request.method=='POST':username=request.POST.get('name')password=request.POST.get('pwd')ret=models.UserInfo.objects.filter(name=username,pwd=password)if ret:request.session['is_login']=Truerequest.session['username']=usernamereturn redirect('/index/')else:return redirect('/login/')return render(request,'login.html')def index(request):if not request.session.get('is_login'):return redirect('/login/')name=request.session.get('uername')return render(request,'index.html',{"name":name})def addBook(request):return render(request,'addBook.html')def log_out(request);request.session.flush()return redirect("/login/") #login.html <form action='/login/' method='post'>{% csrf_token %}<p>姓名<input type='text' name='user'></p><p>密碼<input type='pwd' name='pwd'></p><input type='submit'> </form>#index.html<h3>welcome {{ name }}</h3> <a href="/logout/">注銷</a>#addBook.html<form action='/login/' method='post'>{% csrf_token %}<p>書(shū)名<input type='text' name='user'></p><p>價(jià)格<input type='pwd' name='pwd'></p><input type='submit'> </form>

auth認(rèn)證模塊

不用這個(gè)模塊,用session和cooike也可以
只是這個(gè)模塊更加簡(jiǎn)單

#urls.py url(r'^login',views.login) url(r'^index',views.index) url(r'^logout',views.log_out) url(r'^reg',views.reg) #views.py from django.contrib import auth from django.contrib.auth.models import Userdef login(request):if request.method == "POST":username=request.POST.get('user')password=request.POST.get('pwd')user=auth.authenticate(username=username,password=password)if user:auth.login(request,user)return redirect('/index/')else:return redirect('/login/')return render(request,"login.html")def index(request):if not request.user.is_authenticated():return redirect('/login/')return render(request,'index.html')def log_out(request):auth.logout(request)return redirect('/login/')def reg(request):if request.method=="POST":user=request.POST.get('user')pwd=request.POST.get('pwd')User.objects.create_user(username=user,password=pwd)return redirect('/login/')return render(request,"reg.html") #login.html <form action='/login/' method='post'>{% csrf_token %}<p>姓名<input type='text' name='user'></p><p>密碼<input type='pwd' name='pwd'></p><input type='submit'> </form>#index.html <li><a href="#">welcome {{ request.user }}</a></li> <li><a href="/logout/">注銷</a></li>#reg.html <h3>注冊(cè)</h3> <form action='/reg/' method='post'>{% csrf_token %}<p>姓名<input type='text' name='user'></p><p>密碼<input type='pwd' name='pwd'></p><input type='submit'><a href='/reg/'><input type='button' value='注冊(cè)'></a> </form>

Django-Ajax

序列化操作:

1.JSON.parse() # 將一個(gè)Json字符串轉(zhuǎn)換為js對(duì)象
2.JSON.stringify() # 將js轉(zhuǎn)換為json字符串

AJAX:
1.異步
2.局部刷新

#urls.py url(r'^index/',views.index) url(r'^send_ajax/',views.send_ajax) url(r'^cal/',views.cal) url(r'^login/',views.login) #views.py def index(request):return render(request,'index.html')def send_ajax(request):return HttpResponse("OK")def cal(request):num1=request.GET.get("num1")num2=request.GET.get("num2")ret=int(num1)+int(num2)return HttpResponse(ret)def login(request):user=request.POST.get("user")pwd=request.POST.get("pwd")loginResponse={"user":None,"errorMsg":None}if user=="tom" and pwd=="123":loginResponse["user"]="tom"else:loginResponse["errorMsg"]="用戶名或密碼錯(cuò)誤"import jsonreturn HttpResponse(json.dumps(loginResponse)) #index.html <html> <head><script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script> </head> <body> <button>ajaxSend</button><span class='error'></span> {% csrf_token %} <p><input type="text" class="num1">+<input type="text" class="num2">=<input type="text" class="ret"><button class="cal">計(jì)算</button></p> <form action=""><p>姓名 <input type="text" class="user"></p><p>密碼 <input type="password" class="pwd"></p><input type="button" value="submit" class="loginBtn"><span class="login_error"></span> </form> <script>//ajax實(shí)現(xiàn)$('button').click(function(){$.ajax({url:"/send_ajax/",type:"get",success:function(data){$(".error").html(data)}})});//ajax計(jì)算$(".cal").click(function(){var num1=$(".num1").val();var num2=$(".num2").val();$.ajax(function(){url:"/cal/",type:"post",data:{"num1":num1,"num2":num2,csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val()},success:function(data){$(".ret").val(data)}})});//ajax登陸$(".loginBtn").click(function(){$.ajax(function(){url:"/login/",type:"POST",data:{user:$(".user").val(),pwd:$(".pwd").val(),csrfmiddlewaretoken:$('[name="csrfmiddlewaretoken"]').val()},success:function(data){console.log(typeof data); //stringvar data= JSON.parse(data); console.log(typeof data); //objectif(data["user"]){location.href="/index/" //成功后跳轉(zhuǎn)}else{var error_msg=data["error_Msg"];$(".login_error").html(error_msg).css("color","red");setTimeout(function(){$(".login_error").html("") //3s后清空文本},3000)}}})}); </script> </body> </html>

?

轉(zhuǎn)載于:https://www.cnblogs.com/Ryans-World/p/7883255.html

總結(jié)

以上是生活随笔為你收集整理的Django基础(四)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。