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>
View Code

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')

 

 

 

  

 

posted @ 2016-12-13 09:33  jidi_78  阅读(99)  评论(0)    收藏  举报