1. 程式人生 > >django 筆記8 url模板 自定義函數 simple_tag

django 筆記8 url模板 自定義函數 simple_tag

增刪改查 AI gis code core coo oct print sim

感謝alex老師~

知識點: URL
- 兩個沒見 url>路由系統> 函數或類 > 返回字符串 Form表單提交: 提交 >url>函數或類中的方法 -.. HttpResponse() render(request,index.html) redirect(
/index/) 用戶<< 返回字符串 (當接收到redirect時)自動發起另一個請求 Ajax: $.ajax({ url:/index/, data:{} , //用字典形式發$(form對象).serialize() 但如果有多選 需要添加traditional:true type:"POST", traditional: true dataType:
JSON, success:function(data){ location.reload() #刷新 location.href = "某個地址" #跳轉 } }) 提交 -> url ->函數或類中的方法 HttpResponse(‘‘‘‘) 用戶 << 字符串 註:字典需先轉為字符串才能發送到後臺
k3:JSON.stringfy({k3:v}) Views -請求的其他信息 request from django.core.Handers.wsgi import WSGIRequest print(type(request)) print(request.environ) 所有的信息 分辨手機PC的請求頭 print(request.environ[HTTP_USER_AGENT]) #request.POST #request.GET #request.COOKIES Models - 大量的操作 Templates - 模板的繼承...html extends include - 模板自定義函數 自定義simple_tag 步驟如下: 註:名字不能改 templatetags register 1:首先在某個app下面建立一個叫templatetags 2:在templatetags創建個任意py文件 如 cc.py 3:然後寫上 ########################## from django import template from django.utils.safestring import mark_safe register = template.Library() @register.simple_tag //加個裝飾器 def func(a1,a2): return a1+a2 ########################## 4.使用 在setting裏面要註冊當前app 5.在templates的html文件裏使用 如1.html 6.在頂部 {% load cc %} py文件的名字 如果有extends放其下面 {%extends master.html %} {% load cc %} 7.{% func 2 3 %} 就會顯示5 裏面的空格無關系 函數名 註: @register.simple_tag //加個裝飾器 隨意參數 且空格隨意 缺點 不能作為if條件 def func(a1,a2): return a1+a2 {% func 2 3 %} @register.filter #filter只能傳兩個值 空格還得控制 應用場景:用在if判斷裏{% if "mm"|haha:"gg" %} {%endif%} def haha(a1,a2,a3): return a1+a2+a3 {{"mm"|haha:"gg"}} {{參數1|函數名:"參數2"}} cookie和session用來用戶認證 當用戶登錄成功後才能操作 -裝飾器 分頁只能在django用 (1)用django的一個類 (2)自定義的分頁 公共的主頁 通用的 對用戶的請求進行驗證 Form驗證: 路由系統URL: a./index/ -> 函數或類 b. /index/(?P<nid>\d+) 函數或類 d. /index/(?P<pid>\d+) name=root reverse() {% url root 1%} from django.urls import reverse (views.py) v = reverse(root) print(v) e./crm/ include(app01.urls) 路由分發 f.默認值 url(r^index/, views.index,{name:root}), def index(request,name): return HttpResponse(name) g.命名空間 一般不用 urls /admin/ include(app01.urlsnamespace="m1"), /crm/ include(app01.urls, namespace = "m2") app01.urls /index/ name = n1 reverser(m1:n1) 生成完整的url /admin/index app01.urls /index/(\d+) 3、 def func(request): request.POST request.GET request.FILES request.getlist request.method request.path_info return render,HttpResponse, redirect 4、 render(request, "index.html") for if 索引 keys values items all 5class User(models.Model): username = models.CharField(max_length=32) //字符長度 email = models.EmailField() Django Admin :有驗證功能 User.objects.create(username="root", email="afuhadf") 如果使用這句是可以插入成功的 ,但是在django Admin裏面添加則會需要驗證 增刪改查 外鍵 一對多 多對多 註:(1)user_type = models.ForeignKey("UserType") user_list = User.objects.all() //對象列表 for obj in user_list: obj.user_type_id obj.user_type.name #對象的跨表 (2)user = User.objects.get(id=1) //單個對象 user. (3)User.objects.all().values("username","user_type__name") //__的跨表 根據values 多對多 (4) class UserType(models.Model): name = models.CharField(max_length=32) class User(models.Model): username = models.CharField(max_length=32) email = models.EmailField() user_type = models.ForeignKey("UserType") m = models.ManyToMany("UserGroup") class UserGroup(models.Model): name = .... obj = User.objects.get(id = 1) obj.m.add(2) obj.m.add(*[1,2,34]) obj.m.remove() obj.m.clear() obj.m.ser([1,2,3,4]) #多個組的信息。 UserGroup對象 obj.m.all() obj.m.filter(name = CTO) 創建一個base.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title%}{% endblock%}</title> {% block css %}{% endblock %} </head> <body> <div>小蛇皮</div> {% block content %}{% endblock %} <script src="/static/jquery.js"></script> {% block js %}{% endblock %} </body> </html> 在head中的 tp1.html {% extends base.html %} #要繼承哪個模板 {% block title %}用戶管理 {% endblock %} 要繼承模板的哪個塊 {% block content %} <h1>用戶管理</h1> <ul> for循環 <ul> {% endblock %} {% block css %} <style> <style> {% endblock %} {% block js %} <script><script> {% endblock %} 但是關於CSS JS 同時跟順序無關 {% include "tag.html" %} 先寫一個tag.html小功能 一個模板裏添加這個 可以重復添加

django 筆記8 url模板 自定義函數 simple_tag