这部分将是我们最后的一个视图。之后,我们将专心来改进现有功能。
accounts/views.py
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator
from django.views.generic import UpdateView
@method_decorator(login_required, name='dispatch')
class UserUpdateView(UpdateView):
model = User
fields = ('first_name', 'last_name', 'email', )
template_name = 'my_account.html'
success_url = reverse_lazy('my_account')
def get_object(self):
return self.request.user
myproject/urls.py
from django.conf.urls import url
from accounts import views as accounts_views
urlpatterns = [
# ...
url(r'^settings/account/$', accounts_views.UserUpdateView.as_view(), name='my_account'),
]
templates/my_account.html
{% extends 'base.html' %}
{% block title %}我的账号{% endblock %}
{% block breadcrumb %}
<li class="breadcrumb-item active">我的账号</li>
{% endblock %}
{% block content %}
<div class="row">
<div class="col-lg-6 col-md-8 col-sm-10">
<form method="post" novalidate>
{% csrf_token %}
{% include 'includes/form.html' %}
<button type="submit" class="btn btn-success">保存更改</button>
</form>
</div>
</div>
{% endblock %}
原文:https://github.com/pythonzhichan/django-beginners-guide/blob/master/ClassBasedViews2.md