1.views.py
from django.shortcuts import render,redirect
from app01 import models
from app01.forms import UserForm
# Create your views here.
def users(req):
user_list=models.UserInfo.objects.all()
return render(req,"users.html",{'user_list':user_list})
def add_user(req):
if req.method=="GET":
obj=UserForm()
return render(req,"add_user.html",{'obj':obj})
else:
obj=UserForm(req.POST)
if obj.is_valid():
print(obj.cleaned_data)
# models.UserInfo.objects.create(
# username=obj.cleaned_data['user'],
# email=obj.cleaned_data['email']
# )
models.UserInfo.objects.create(**obj.cleaned_data)
return redirect('/users/')
else:
return render(req,'add_user.html',{'obj':obj})
def edit_user(req,nid):
if req.method=="GET":
# 从数据库取出编辑选中的数据
data = models.UserInfo.objects.filter(id=nid).first()
# 传到前端显示
obj = UserForm({'username': data.username, 'email': data.email})
return render(req, 'edit_user.html', {'obj': obj, 'nid': nid})
else:
obj=UserForm(req.POST)
if obj.is_valid():
models.UserInfo.objects.filter(id=nid).update(**obj.cleaned_data)
return redirect('/users/')
else:
return render(req, 'edit_user.html', {'obj': obj, 'nid': nid})
'''
Form
1.验证
2.生成HTML
3.初始化默认值
'''
2.urls.py
"""day59 URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,re_path
from app01 import views
from app02 import views as v2
from app03 import views as v3
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', views.users),
path('add_user/', views.add_user),
re_path('edit_user-(\d+)/', views.edit_user),
re_path('test/', v2.test),
re_path('love/', v2.love),
re_path('ajax/', v2.ajax),
re_path('xuliehua/', v3.xuliehua),
]
3.forms.py
from django import forms as dforms
from django.forms import fields
class UserForm(dforms.Form):
username=fields.CharField()
email=fields.EmailField()
4.models.py
from django.db import models
# Create your models here.
class UserInfo(models.Model):
username=models.CharField(max_length=32)
email=models.EmailField(max_length=32)
5.user.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>users</title>
</head>
<body>
<a href="/add_user/">添加</a>
<ul>
{% for user in user_list %}
<li>{{ user.id }}-{{ user.username }}-{{ user.email }}<a href="/edit_user-{{ user.id }}/">编辑</a></li>
{% endfor %}
</ul>
</body>
</html>
6.add_user.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>add_user</title>
</head>
<body>
{#novalidate 属性规定当提交表单时不对其进行验证。#}
{#如果使用该属性,则表单不会验证表单的输入。#}
<form action="/add_user/" method="post" novalidate>
{% csrf_token %}
<p>{{ obj.username }}{{ obj.errors.username.0 }}</p>
<p>{{ obj.email }}{{ obj.errors.email.0 }}</p>
<input type="submit" value="提交">
</form>
</body>
</html>
7.edit_user.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>edit_user</title>
</head>
<body>
<form action="/edit_user-{{ nid }}/" method="post" novalidate>
{% csrf_token %}
<p>{{ obj.username }}{{ obj.errors.username.0 }}</p>
<p>{{ obj.email }}{{ obj.errors.email.0 }}</p>
<input type="submit" value="提交">
</form>
</body>
</html>