函数视图
views.py 代码如下:
def login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
return HttpResponse(f'用户名{username}的密码是{password}')
elif request.method == 'GET':
return render(request, 'index.html')
settings.py配置信息:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['templates'],
tempaltes/index.html代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<input type="text" name="username">
<input type="text" name="password">
<button>提交</button>
</form>
</body>
</html>
类视图改写
基于函数的通用视图的问题是即便它们可以很好的处理简单案例,但除了一些配置选项之外,没办法扩展或自定义它们,这样就限制了它们在实际应用中用途。
class RegisterView(View):
def get(self, request):
return render(request, 'register.html')
def post(self, request):
username = request.POST.get('username')
password = request.POST.get('password')
return HttpResponse(f'用户名{username}的密码是{password}')