request.user 拿到已登陆的用户实例
instance = user 拿到用户以及数据
前端页面:
点击修改密码页面: <li class="cl-effect-11"><a href="{% url 'logout' %}" data-hover="退出">退出</a></li> <li class="cl-effect-11"><a href="{% url 'users:edit' %}" data-hover="修改密码">修改密码</a></li> {% else %} <li class="cl-effect-11"><a href="{% url 'login' %}?next={{ request.path }}" data-hover="登陆">登陆</a></li> <li class="cl-effect-11"><a href="{% url 'users:register' %}?next={{ request.path }}" data-hover="注册">注册</a></li> {% endif %}
修改密码页面:
<!DOCTYPE html> {% load crispy_forms_tags %} <html lang="zh-cn"> <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, maximum-scale=1.0, user-scalable=no"> <title>修改密码</title> <link rel="stylesheet" href="https://unpkg.com/mobi.css/dist/mobi.min.css"> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <style> .errorlist { color: red; } </style> </head> <body> <div class="flex-center"> <div class="container"> <div class="flex-center"> <div class="unit-1-2 unit-1-on-mobile"> <h1><a href="{% url 'blog:index' %}">千峰博客</a></h1> <h3>修改密码</h3> {% include 'snippet/message.html' %} <form class="form" action="" method="post"> {% csrf_token %} {# {{ form.non_field_errors }}#} {# {% for field in form %}#} {# {{ field.label_tag }}#} {# {{ field }}#} {# {{ field.errors }}#} {# {% if field.help_text %}#} {# <p class="help text-small text-muted">{{ field.help_text|safe }}</p>#} {# {% endif %}#} {# {% endfor %}#} {{ form |crispy }} <button type="submit" class="btn btn-primary btn-block">确认修改</button> <input type="hidden" name="next" value="{{ next }}"/> </form> <div class="flex-left top-gap text-small"> <div class="unit-2-3"><span>没有账号?<a href="{% url 'users:register' %}">立即注册</a></span></div> <div class="unit-1-3 flex-right"><span><a href="{% url 'password_reset' %}">忘记密码?</a></span></div> </div> </div> </div> </div> </div> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </body> </html>
路由:
from django.conf.urls import url from .views import register, edit app_name = 'users' urlpatterns = [ url(r'^register/$', register, name='register'), url(r'^edit/$', edit, name='edit'), ]
视图函数:
# 修改用户信息 def edit(request): user = request.user form = registerForm(instance=user) if request.method == 'POST': form = registerForm(request.POST, instance=user) if form.is_valid(): form.save() messages.success(request, '密码修改成功!') return redirect(reverse('login')) return render(request, 'users/edit.html', {'form': form})