django更新用户个人资料的网址

时间:2017-06-10 15:36:20

标签: django

到目前为止,我已经做了一些研究,大多数解决方案似乎已经过时了。我已使用以下代码扩展了我的用户个人资料。更新表单已呈现,但当我登顶表单时,我收到错误。贝娄是我的代码,请帮助理清我所犯的错误。

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。

2 个答案:

答案 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')