我有一个基本的URL链接,可访问个人资料编辑屏幕,但似乎破坏了我的应用程序。
我尝试了很多事情,不同的观点让我感到困惑。我能够使表格以前出现过,但是以某种方式破坏了它。
从我的base.html中(如果我删除此行,该应用程序将再次开始工作)。我不确定传递的这个user.id参数-是否需要?
<li class="nav-item">
<a class="nav-link" href="{% url 'accounts:profile_update' user.id %}">Edit Profile</a>
</li>
我的网址文件:
path('profile/edit/', views.ProfileCreate.as_view(), name='profile_update'),
我的模特:
class Profile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='userprofile')
houseNumber = models.CharField(max_length=150, default='')
street = models.CharField(max_length=150, default='')
suberb = models.CharField(max_length=150, default='')
city = models.CharField(max_length=150, default='')
phone = models.CharField(max_length=150, default='')
def __unicode__(self):
return self.user.get_full_name()
def __str__(self):
return self.user
def get_absolute_url(self):
return reverse('account:profile', kwargs=[self.pk])
我的表格:
class ProfileForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ProfileForm, self).__init__(*args, **kwargs)
class Meta:
model = Profile
fields = ['user', 'houseNumber', 'street', 'suberb', 'city', 'phone']
表单的html
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
{% if form.errors %}
{% for field in form %}
{% for error in field.errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endif %}
<div class="container">
<form enctype="multipart/form-data" action="{% url 'accounts:profile_update' %}" method="post" novalidate>
{% csrf_token %}
{{ form|crispy }}
<input name="Submit" type="submit" class="btn btn-success" value="Save"></input>
</form>
<p></p>
</div>
{% endblock %}
很抱歉,如果这个问题与我问过的其他几个问题类似,但是我只是不得不使用另一种方法重新使用此表单,因为它以前并没有正常工作。
答案 0 :(得分:0)
根据您的网址,您不需要通过user.id
传递update_profile
。因此,请将代码更改为:
<a class="nav-link" href="{% url 'accounts:profile_update' %}">Edit Profile</a>