Html 使用带有初始关键字的模型表单更新Django用户

Html 使用带有初始关键字的模型表单更新Django用户,html,django-models,django-forms,django-templates,django-views,Html,Django Models,Django Forms,Django Templates,Django Views,我正在尝试使用模型表单更新用户配置文件,方法是使用初始关键字传递已存储的用户详细信息。我不知道我的代码出了什么问题。当我点击提交按钮时,它只是重新加载相同的页面,而不是更新/保存详细信息。我需要一些帮助来解决这个问题 ## views.py ## def personal_details_update(request): if not request.user.is_authenticated(): return HttpResponse

我正在尝试使用模型表单更新用户配置文件,方法是使用初始关键字传递已存储的用户详细信息。我不知道我的代码出了什么问题。当我点击提交按钮时,它只是重新加载相同的页面,而不是更新/保存详细信息。我需要一些帮助来解决这个问题

## views.py ##

        def personal_details_update(request):
        if not request.user.is_authenticated():
            return HttpResponseRedirect('/login/')
        else:
            user = request.user
            data = {
                'username': user.username,
                'email': user.email,
                'first_name': user.first_name,
                'last_name': user.last_name,
                'address': user.address,
                'city': user.city,
                'state': user.state,
                'country': user.country,
                'mobile': user.mobile,
            }
            form = PersonalDetailsForm(request.POST or None, initial=data)
            if request.method == 'POST':
                if form.is_valid():
                    user.username = request.POST['username']
                    user.email = request.POST['email']
                    user.first_name = request.POST['first_name']
                    user.last_name = request.POST['last_name']
                    user.address = request.POST['address']
                    user.city = request.POST['city']
                    user.state = request.POST['state']
                    user.country = request.POST['country']
                    user.mobile = request.POST['mobile']

                    user.save()
                    return HttpResponseRedirect('/personal_details/')
                    # return HttpResponseRedirect('%s' % (reverse('personal_details')))
            context = {
                'form': form,
            }
            return render(request, 'login/personal_details_update.html', context)


        def personal_details(request):
        if not request.user.is_authenticated():
            return HttpResponseRedirect('/login/')
        else:
            return render(request, 'login/personal_details.html')



## urls.py ##

        from django.conf.urls import url
        from . import views

        app_name = 'login'

        urlpatterns = [
        url(r'^$', views.home, name='home'),
        url(r'^about us/$', views.about_us, name='about_us'),
        url(r'^services/$', views.services, name='services'),
        url(r'^registration/$', views.registration, name='registration'),
        url(r'^login/$', views.login_user, name='login'),
        url(r'^admin/$', views.admin_login, name='admin_login'),
        url(r'^logout/$', views.logout_user, name='logout'),
        url(r'^personal_details/$', views.personal_details, name='personal_details'),
        url(r'^personal_details/update/$', views.personal_details_update, name='personal_details_update'),
        ]



## forms.py ##

            from django import forms
            from .models import User
            from django.contrib.admin.widgets import AdminDateWidget


        class UserForm(forms.ModelForm):
            date_of_birth = forms.DateField(widget=AdminDateWidget)
            password = forms.CharField(widget=forms.PasswordInput)
            confirm_password = forms.CharField(widget=forms.PasswordInput)

            class Meta:
                model = User
                fields = ['username', 'email', 'first_name', 'last_name', 'date_of_birth', 'address', 'city', 'state',
                          'country', 'mobile', 'avatar', 'password', 'confirm_password']


        class PersonalDetailsForm(forms.ModelForm):
            date_of_birth = forms.DateField(widget=AdminDateWidget)

            class Meta:
                model = User
                fields = ['username', 'email', 'first_name', 'last_name', 'address', 'city', 'state',
                          'country', 'mobile']
                exclude = ['date_of_birth', 'avatar', 'password', 'confirm_password']




## personal_details.html ##

        {% extends 'upload/base.html' %}
        {% block title %}Cloud | Personal Details{% endblock %}
        {% block folders_active %}active{% endblock %}
        {% load staticfiles %}
        {% block navigation%}
        <div class="container-fluid files-container">
            <div class="row">
                <div class="col-sm-12 col-md-4">
                    <div class="panel panel-default" style="background: transparent">
                        <div class="panel-body">
                            <div class="page-header">
                                {% if msg %}
                                    <p><strong><font color="#dc143c">{{ msg }}</font></strong></p>
                                {% endif %}
                            </div>
                            <div class="row">
                                <h4>Personal Details &nbsp;<a href="{% url 'login:personal_details_update' %}" class="btn-success" style="background: transparent"><span class="glyphicon glyphicon-edit"></span></a></h4><br>
                            </div>
                            <form class="form-horizontal" role="form" action="" method="post" enctype="multipart/form-data">
                                <div class="form-group">
                                    <label class="control-label" for="id_username">
                                        Username:
                                    </label>
                                    {{ user.username }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_email">
                                        Email:
                                    </label>
                                    {{ user.email }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_first_name">
                                        First Name:
                                    </label>
                                    {{ user.first_name }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_last_name">
                                        Last Name:
                                    </label>
                                    {{ user.last_name }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_date_of_birth">
                                        Date Of Birth:
                                    </label>
                                    {{ user.date_of_birth }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_address">
                                        Address:
                                    </label>
                                    {{ user.address }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_city">
                                        City:
                                    </label>
                                    {{ user.city }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_state">
                                        State:
                                    </label>
                                    {{ user.state }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_country">
                                        Country:
                                    </label>
                                    {{ user.country }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_mobile">
                                        Mobile:
                                    </label>
                                    {{ user.mobile }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_avatar">
                                        Avatar:
                                    </label>
                                    {{ user.avatar }}
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        {% endblock %}



## personal_details_update.html ##

        {% extends 'upload/base.html' %}
        {% block title %}Cloud | Personal Details Update{% endblock %}
        {% block folders_active %}active{% endblock %}
        {% load staticfiles %}
        {% block navigation%}
        <div class="container-fluid files-container">
            <div class="row">
                <div class="col-sm-12 col-md-4">
                    <div class="panel panel-default" style="background: transparent">
                        <div class="panel-body">
                            <div class="page-header">
                                {% if msg %}
                                    <p><strong><font color="#dc143c">{{ msg }}</font></strong></p>
                                {% endif %}
                            </div>
                            <div class="row">
                                <h4>Personal Details Update Form</h4><br>
                            </div>
                            <form class="form-horizontal" role="form" action="" method="post" enctype="multipart/form-data">

                                {% csrf_token %}

                                <div class="form-group">
                                    <label class="control-label" for="id_username">
                                        Username:
                                    </label>
                                    {{ form.username }}
                                </div>

                                <div class="form-group">
                                    <label class="control-label" for="id_email">
                                        Email:
                                    </label>
                                    {{ form.email }}
                                </div>

                                <div class="form-group">
                                    <label class="control-label" for="id_first_name">
                                        First Name:
                                    </label>
                                    {{ form.first_name }}
                                </div>
                                <div class="form-group">
                                    <label class="control-label" for="id_last_name">
                                        Last Name:
                                    </label>
                                    {{ form.last_name }}
                                </div>

                                <div class="form-group">
                                    <label class="control-label" for="id_address">
                                        Address:
                                    </label>
                                    {{ form.address }}
                                </div>

                                <div class="form-group">
                                    <label class="control-label" for="id_city">
                                        City:
                                    </label>
                                    {{ form.city }}
                                </div>

                                <div class="form-group">
                                    <label class="control-label" for="id_state">
                                        State:
                                    </label>
                                    {{ form.state }}
                                </div>

                                <div class="form-group">
                                    <label class="control-label" for="id_country">
                                        Country:
                                    </label>
                                    {{ form.country }}
                                </div>

                                <div class="form-group">
                                    <label class="control-label" for="id_mobile">
                                        Mobile:
                                    </label>
                                    {{ form.mobile }}
                                </div>

                                <div class="form-group">
                                    <div class="col-sm-offset-5">
                                        <button type="submit" class="btn btn-success">Update</button>
                                    </div>
                                </div>

                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        {% endblock %}
##views.py##
def个人详细信息更新(请求):
如果不是,则请求。用户。是否经过身份验证()
返回HttpResponseRedirect(“/login/”)
其他:
user=request.user
数据={
“用户名”:user.username,
“电子邮件”:user.email,
“first\u name”:user.first\u name,
“姓氏”:user.last\u name,
“地址”:user.address,
“城市”:user.city,
“状态”:user.state,
“国家”:user.country,
“移动”:user.mobile,
}
表单=个人详细信息表单(request.POST或None,初始值=数据)
如果request.method==“POST”:
如果form.is_有效():
user.username=request.POST['username']
user.email=request.POST['email']
user.first\u name=request.POST['first\u name']
user.last\u name=request.POST['last\u name']
user.address=request.POST['address']
user.city=request.POST['city']
user.state=request.POST['state']
user.country=request.POST['country']
user.mobile=request.POST['mobile']
user.save()
返回HttpResponseRedirect(“/personal_details/”)
#返回HttpResponseRedirect(“%s%”(反向('personal_details'))
上下文={
“形式”:形式,
}
返回呈现(请求“login/personal\u details\u update.html”上下文)
def个人详细信息(请求):
如果不是,则请求。用户。是否经过身份验证()
返回HttpResponseRedirect(“/login/”)
其他:
返回呈现(请求'login/personal_details.html')
##url.py##
从django.conf.url导入url
从…起导入视图
应用程序名称='登录'
URL模式=[
url(r'^$',views.home,name='home'),
url(r“^about us/$”,views.about_-us,name='about_-us'),
url(r“^services/$”,views.services,name='services'),
url(r“^registration/$”,views.registration,name='registration'),
url(r“^login/$”,views.login\u user,name='login'),
url(r'^admin/$',views.admin\u login,name='admin\u login'),
url(r“^logout/$”,views.logout\u user,name='logout'),
url(r“^personal\u details/$”,views.personal\u details,name='personal\u details'),
url(r“^personal\u details/update/$”,views.personal\u details\u update,name='personal\u details\u update'),
]
##forms.py##
来自django导入表单
从。模型导入用户
从django.contrib.admin.widgets导入AdminDateWidget
类UserForm(forms.ModelForm):
出生日期=forms.DateField(widget=AdminDateWidget)
password=forms.CharField(widget=forms.PasswordInput)
确认\u password=forms.CharField(widget=forms.PasswordInput)
类元:
模型=用户
字段=[“用户名”、“电子邮件”、“名”、“姓”、“出生日期”、“地址”、“城市”、“州”,
‘国家’、‘手机’、‘化身’、‘密码’、‘确认密码’]
类PersonalDetailsForm(forms.ModelForm):
出生日期=forms.DateField(widget=AdminDateWidget)
类元:
模型=用户
字段=[“用户名”、“电子邮件”、“名”、“姓”、“地址”、“城市”、“州”,
“国家”、“移动”]
排除=[“出生日期”、“化身”、“密码”、“确认密码”]
##personal_details.html##
{%extends'upload/base.html%}
{%block title%}Cloud |个人详细信息{%endblock%}
{%block文件夹\u active%}active{%endblock%}
{%load staticfiles%}
{%block-navigation%}
{%if msg%}
{{msg}

{%endif%} 个人详细信息
用户名: {{user.username} 电邮: {{user.email} 名字: {{user.first_name} 姓氏: {{user.last_name} 出生日期: {{user.date}
user = request.user
user = User.objects.get(username=request.user.username)