到目前为止,我已经做了一些研究,大多数解决方案似乎已经过时了。我已使用以下代码扩展了我的用户个人资料。更新表单已呈现,但当我登顶表单时,我收到错误。贝娄是我的代码,请帮助理清我所犯的错误。
models.py
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, null=True, blank=True)
picture = models.ImageField(upload_to="profile_image", null=True, blank=True)
company = models.TextField(max_length=500, null=True)
def __str__(self):
return self.user.username
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
views.py
def update_profile(request):
if request.method == 'POST'
create_account_form = Create_account(request.POST,
instance=request)
profile_form = ProfileForm(request.POST,
instance=request.user.userprofile)
if create_account_form.isvalid() and profile_form.is_valid()
create_account.save()
profile_form.save()
return redirect('app_namespace:url_name')
else :
messages.error(request, 'fill out the form correctly')
else:
create_account_form = Create_account(instance=request.user)
profile_form = ProfileForm(instance=request.user.userprofile)
return render(request, "app_name/editprofile.html",{'user_form':creat_account_form,'profile_form':profile_form})
urls.py
urlpatterns =[
url(r'Update_profil/$', views.update_profile, name="profile_update")
]
用于profile_acount的网址,其中在表单汇总时重定向用户
url(r'profileAccount/$',views.profileAccount.as_view(),name='profile_account')
HTML
查看profileAccount
class profileAccount(generic.ListView):
model = UserProfile
template_name ='success/user_account/profile_account.html'
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %} {{ user_form.as_p }} {{ profile_form.as_p }} <button type="submit">Save changes</button>
</form>
错误
当我登顶时,我收到以下错误。我知道错误与网址和视图有关,我已经做了很多研究,大多数都被淘汰了。请帮助我解决更新我的userprofile最准确的工作示例。非常感谢。
ERROR
反向'profile_accounts',找不到参数'()'和关键字参数'{}'。尝试过0种模式:[] 它改为返回None。
答案 0 :(得分:0)
您需要将最后一行移回一个缩进。
答案 1 :(得分:0)
您需要对视图进行一些更改
def update_profile(request):
if request.method == 'POST':
create_account_form = Create_account(request.POST)
profile_form = ProfileForm(request.POST, instance=request.user.userprofile)
if create_account_form.is_valid() and profile_form.is_valid():
create_account.save()
profile_form.save()
return redirect('app_namespace:url_name')
else:
messages.error(request, 'fill out the form correctly')
else:
create_account_form = Create_account()
profile_form = ProfileForm(instance=request.user.userprofile)
return render(request, "app_name/editprofile.html", dict(user_form=create_account_form, profile_form=profile_form)
return语句应在if
/ else
子句之外。
表单必须传递到上下文中。
注意:我根据您发布的内容而不是编辑器中的内容说出这些内容。
修改强>
添加&#39; ^&#39;在正则表达式的开头,符号表示模式的开始。省略&#34; ^&#34;导致NoReverse Match错误。
url(r'^profileAccount/$',views.profileAccount.as_view(),name='profile_account')