西游之路——python全栈——Form组件及生成html

一、URL添加

 1 re_path('edit_user-(\d+)$', views.edit_user), # 使用正则匹配 

二、views.py操作

 1 from django.shortcuts import render,redirect
 2 from app01 import models
 3 from app01.forms import UserForm
 4 
 5 def users(request):
 6     user_list = models.UserInfo.objects.all()
 7     return render(request,'users.html',{'user_list':user_list})
 8 
 9 def add_users(request):
10     if request.method == 'GET':
11         obj = UserForm()
12         return render(request,'add_users.html',{'obj':obj})
13     else:
14         obj = UserForm(request.POST)
15         if obj.is_valid():
16             # 直接用字典方式创建,前提是UserForm类字段名与表UserInfo字段名相对应
17             models.UserInfo.objects.create(**obj.cleaned_data)
18             return redirect('/users')
19         else:
20             return render(request, 'add_users.html', {'obj': obj})
21 
22 # 为什么nid当参数传?
23 def edit_user(request,nid):
24     if request.method == 'GET':
25         # nid = request.GET.get('nid')
26         data = models.UserInfo.objects.filter(id=nid).first()
27         obj = UserForm({'username':data.username,'email':data.email})
28         return render(request,'edit_user.html',{'obj':obj,'nid':nid})
29     else:
30         # nid = request.GET.get('nid')
31         obj = UserForm(request.POST)
32         if obj.is_valid():
33             models.UserInfo.objects.filter(id=nid).update(**obj.cleaned_data)
34             return redirect('/users')
35         else:
36             return render(request, 'edit_user.html', {'obj': obj, 'nid': nid})

三、创建类

1 # 取别名dforms
2 from django import forms as dforms
3 from django.forms import fields
4 
5 class UserForm(dforms.Form):
6     username = fields.CharField()
7     email = fields.EmailField()

四、HTML操作

  显示页面   --->  添加  --->  编辑

1 <div><a href="/add_users">添加</a></div>
2 <ul>
3     {% for row in user_list %}
4         <li>{{row.id}}-{{row.username}}-{{row.email}}<a href="/edit_user-{{row.id}}">编辑</a></li>
5     {% endfor %}
6 </ul>
1 <form action="/add_users" method="POST" novalidate>
2     <p>{{obj.username}}    {{obj.errors.username.0}}</p>
3     <p>{{obj.email}}    {{obj.errors.email.0}}</p>
4     <input type="submit" value="提交">
5 </form>
1 <form action="/edit_user-{{nid}}" method="POST" novalidate>
2     <p>{{obj.username}}   {{obj.errors.username.0}}</p>
3     <p>{{obj.email}}   {{obj.errors.email.0}}</p>
4     <input type="submit" value="保存">
5 </form>

五、创建表

1 from django.db import models
2 
3 class UserInfo(models.Model):
4     username = models.CharField(max_length=32)
5     email = models.EmailField(max_length=32)

 

posted @ 2018-09-08 11:40  陆游憩  阅读(214)  评论(0编辑  收藏  举报