• 西游之路——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)
  • 相关阅读:
    [安全相关]SQL注入
    [android] service基础
    [android] activity基础
    [javascript] 基础积累
    [CSS] 常用积累
    html & css
    时序图和活动图
    分析图书馆管理系统的5W1H
    风险分析
    PM案例分析(团队作业第三组)
  • 原文地址:https://www.cnblogs.com/Lujun1028/p/9608655.html
Copyright © 2020-2023  润新知