函数视图

views.py 代码如下:

  1. def login(request):
  2. if request.method == 'POST':
  3. username = request.POST.get('username')
  4. password = request.POST.get('password')
  5. return HttpResponse(f'用户名{username}的密码是{password}')
  6. elif request.method == 'GET':
  7. return render(request, 'index.html')

settings.py配置信息:

  1. TEMPLATES = [
  2. {
  3. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  4. 'DIRS': ['templates'],

tempaltes/index.html代码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <form action="" method="post">
  11. {% csrf_token %}
  12. <input type="text" name="username">
  13. <input type="text" name="password">
  14. <button>提交</button>
  15. </form>
  16. </body>
  17. </html>

类视图改写

基于函数的通用视图的问题是即便它们可以很好的处理简单案例,但除了一些配置选项之外,没办法扩展或自定义它们,这样就限制了它们在实际应用中用途。

  1. class RegisterView(View):
  2. def get(self, request):
  3. return render(request, 'register.html')
  4. def post(self, request):
  5. username = request.POST.get('username')
  6. password = request.POST.get('password')
  7. return HttpResponse(f'用户名{username}的密码是{password}')