19.django
一、路由系统
1.路由系统传参
========index.html======== <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> {% for k,v in user_list.items %} <li>{{ k }}---<a target="_blank" href="/opsdev/detail/?nid={{ k }}">{{ v.name }}</a>---{{ v.email }}</li> {% endfor %} </ul> </body> </html> ========views.py========== def index(request): return render(request, 'opsdev/index.html', {'user_list':USER_DICT}) def detail(request,nid): nid = request.GET.get('nid') return HttpResponse(nid) =======urls.py========= from django.conf.urls import url from opsdev import views urlpatterns = [ url(r'^index/',views.index), url(r'^home/',views.home.as_view()), url(r'^detail/',views.detail), ]
2.路由系统正则表达式传参
=======index.html======== <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> {% for k,v in user_list.items %} <li>{{ k }}---<a target="_blank" href="/opsdev/detail-{{ k }}.html">{{ v.name }}</a>---{{ v.email }}</li> {% endfor %} </ul> </body> </html> =======views.py========= def detail(request,nid): #nid = request.GET.get('nid') return HttpResponse(nid) =======urls.py=========== from django.conf.urls import url from opsdev import views urlpatterns = [ url(r'^login/', views.login), url(r'^index/',views.index), url(r'^home/',views.home.as_view()), #url(r'^detail/',views.detail), url(r'^detail-(\d+).html',views.detail), ]
3.url正则表达式
=======index.html======== <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> {% for k,v in user_list.items %} <li>{{ k }}---<a target="_blank" href="/opsdev/detail-{{ k }}.html">{{ v.name }}</a>---{{ v.email }}</li> {% endfor %} </ul> </body> </html> =======views.py======= def detail1(request,nid,uid): #nid = request.GET.get('nid') print (nid,uid) return HttpResponse(nid)
4.args 正则表达式
=====urls.py====== from django.conf.urls import url from opsdev import views urlpatterns = [ url(r'^login/', views.login), url(r'^index/',views.index), url(r'^home/',views.home.as_view()), #url(r'^detail/',views.detail), url(r'^detail-(\d+).html',views.detail), # url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail1), url(r'^detail-(\d+)-(\d+).html',views.detail2), ] ======views.py======= def detail2(request,*args): #nid = request.GET.get('nid') print (args) nid=args[0] uid=args[1] return HttpResponse(nid)
5.**kwargs正则表达式
=====urls.py====== from django.conf.urls import url from opsdev import views urlpatterns = [ url(r'^login/', views.login), url(r'^index/',views.index), url(r'^home/',views.home.as_view()), #url(r'^detail/',views.detail), #url(r'^detail-(\d+).html',views.detail), # url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail1), #url(r'^detail-(\d+)-(\d+).html',views.detail2), url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail3), ] ======views.py========= def detail3(request,**kwargs): #nid = request.GET.get('nid') print (kwargs) nid=kwargs['nid'] uid=kwargs['uid'] uid_and_nid=uid +" " + nid return HttpResponse(uid_and_nid)
6.自动修改模板中的URL
======urls.py======== from django.conf.urls import url from opsdev import views urlpatterns = [ url(r'^login/', views.login), url(r'^dfdfdf/',views.index,name='indexx'), url(r'^home/',views.home.as_view()), #url(r'^detail/',views.detail), #url(r'^detail-(\d+).html',views.detail), # url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail1), #url(r'^detail-(\d+)-(\d+).html',views.detail2), url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail3), ] =======views.py========= def index(request): return render(request, 'opsdev/index.html',{'user_list':USER_DICT}) ========index.html======== <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="{% url 'indexx' %} }" method="POST"> <p><input type="text" name="user" placeholder="用户名" /></p> <p><input type="text" name="email" paceholder="邮箱" /></p> <input type="submit" value="提交" /> </form> <ul> {% for k,v in user_list.items %} <li>{{ k }}---<a target="_blank" href="/opsdev/detail-{{ k }}.html">{{ v.name }}</a>---{{ v.email }}</li> {% endfor %} </ul> </body> </html>
6.1带参数的效果
=====urls.py====== from django.conf.urls import url from opsdev import views urlpatterns = [ url(r'^login/', views.login), url(r'^index/(\d+)/',views.index,name='indexx'), url(r'^home/',views.home.as_view()), #url(r'^detail/',views.detail), #url(r'^detail-(\d+).html',views.detail), # url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail1), #url(r'^detail-(\d+)-(\d+).html',views.detail2), url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail3), ] =======index.html======= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="{% url 'indexx' 2 %} }" method="POST"> <p><input type="text" name="user" placeholder="用户名" /></p> <p><input type="text" name="email" paceholder="邮箱" /></p> <input type="submit" value="提交" /> </form> <ul> {% for k,v in user_list.items %} <li>{{ k }}---<a target="_blank" href="/opsdev/detail-{{ k }}.html">{{ v.name }}</a>---{{ v.email }}</li> {% endfor %} </ul> </body> </html> ==========views.py======== def index(request,nid): return render(request, 'opsdev/index.html',{'user_list':USER_DICT})
6.2获取当前url:
=====index.html======== <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="{{ request.path_info }}" method="POST"> <p><input type="text" name="user" placeholder="用户名" /></p> <p><input type="text" name="email" paceholder="邮箱" /></p> <input type="submit" value="提交" /> </form> <ul> {% for k,v in user_list.items %} <li>{{ k }}---<a target="_blank" href="/opsdev/detail-{{ k }}.html">{{ v.name }}</a>---{{ v.email }}</li> {% endfor %} </ul> </body> </html> ==========views.py========= def detail(request,nid): print (request.path_info) #nid = request.GET.get('nid') return HttpResponse(nid) ======urls.py======== from django.conf.urls import url from opsdev import views urlpatterns = [ url(r'^login/', views.login), url(r'^index/(\d+)/',views.index,name='indexx'), url(r'^home/',views.home.as_view()), #url(r'^detail/',views.detail), #url(r'^detail-(\d+).html',views.detail), # url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail1), #url(r'^detail-(\d+)-(\d+).html',views.detail2), url(r'^detail-(?P<uid>\d+)-(?P<nid>\d+).html',views.detail3), ]
二、视图
1.常见模板内容获取:
1 ======login.html======= 2 <form action="/opsdev/login/" method="POST" enctype="multipart/form-data"> 3 #获取input内容 4 <p> 5 <input type="text" name="user" placeholder="用户名" /> 6 </p> 7 <p> 8 <input type="password" name="pwd" placeholder='密码'/> 9 </p> 10 #获取radio内容 11 <p> 12 男:<input type="radio" name="gender" value="1" /> 13 女:<input type="radio" name="gender" value="2" /> 14 </p> 15 #获取checkbox内容 16 <p> 17 男:<input type="checkbox" name="faover" value="a" /> 18 女:<input type="checkbox" name="faover" value="b" /> 19 </p> 20 #上传文件 21 <p> 22 <input type="file" name ='upfile' /> 23 </p> 24 25 <input type="submit" value="提交"> 26 </form> 27 28 29 ====views.py==== 30 def login(request): 31 if request.method == 'GET': 32 return render(request, 'opsdev/login.html') 33 elif request.method == 'POST': 34 u = request.POST.get('user') 35 p = request.POST.get('pwd') 36 g = request.POST.get('gender') 37 f = request.POST.getlist('faover') 38 print (u,p,g,f) 39 40 #上传文件 41 file_data = request.FILES.get('upfile') #获取上传文件名 42 import os 43 print (file_data.name) 44 file_path = os.path.join('upload',file_data.name) #拼接上传路径 45 print (file_path) 46 f = open(file_path,mode='wb') 47 for i in file_data.chunks(): 48 f.write(i) 49 f.close() 50 return redirect('/opsdev/index/') 51 else: 52 print ('error') 53 54 ===index.html==== 55 <!DOCTYPE html> 56 <html lang="en"> 57 <head> 58 <meta charset="UTF-8"> 59 <title>Title</title> 60 </head> 61 <body> 62 <h1>Login Success!!</h1> 63 </body> 64 </html>
2.FBV && CBV
三、模板
四、ORM
1.创建数据
models.UserInfo.objects.create(username='root',password='123')
dic = {'username':'eric','password':'666'}
models.UserInfo.objects.create(**dic)
obj = models.UserInfo(Username='zhangsan',password='123')
obj.save()
2.查找数据
results = models.UserInfo.objects.all() #获取表中所有数据,输出结果为QuerySet类型
for row in results:
print (row.id ,row.name,row.password)
print(result)
results = models.UserInfo.objects.filter(username='root') filter()相当于where
3.删除数据
models.UserInfo.objects.filter(id=4).delete()
4.更新数据
models.UserInfo.objects.all().update(password='666')
models.UserInfo.objcets.filter(id=3).update(password='6666')
浙公网安备 33010602011771号