2017-09-10 18 views
1

ユーザーがプロファイルを更新するための更新ビューがあります。しかし、私はこのエラーが続いています:Django UpdateViewでこのエラーが発生する:/ user/2/editのNoReverseMatch

NoReverseMatch at /user/2/edit 
Reverse for 'user_profile' with no arguments not found. 1 pattern(s) tried: ['user/(?P<pk>\\d+)/$'] 

私が試したことは何も働いていません(pkの追加など)。

UpdateView:

class UserEditProfileView(LoginRequiredMixin,UpdateView): 
    login_url = '/login/' 
    model = UserProfile 
    fields = [ 
      'first_name', 
      'profile_pic', 
      'location', 
      'title', 
      'user_type', 
      'website', 
      'about', 
      'twitter', 
      'dribbble', 
      'github' 
      ] 
    template_name_suffix = '_edit_form' 
    success_url = reverse_lazy('users:user_profile') 

アプリケーションのURL:

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

app_name = 'users' 

urlpatterns = [ 
    url(r'^$',views.UserListView.as_view(),name='user_list'), 
    url(r'^(?P<pk>\d+)/$',views.detailprofile,name='user_profile'), 
    url(r'^(?P<pk>\d+)/edit$',views.UserEditProfileView.as_view(),name='user_profile_edit'), 
    url(r'^login/$',views.user_login,name='user_login'), 
    url(r'^logout/$',views.user_logout,name='user_logout'), 
    url(r'^register/$',views.register,name='register'), 
] 

プロフィールを編集テンプレート:

{% extends "users/base.html" %} 

{% block content %} 

    <div class="form-base"> 
     <h2>Edit Profile</h2> 
     <form method="POST"> 
      {% csrf_token %} 
      {{ form.as_p }} 
      <input type="submit" value="Save" /> 
     </form> 
</div> 

{% endblock %} 

ルあなたが何か他のものを見る必要があるかどうかわかりません。

答えて

1

はまた、私が試したものだuser_profile

class UserEditProfileView(LoginRequiredMixin,UpdateView): 
    login_url = '/login/' 
    model = UserProfile 
    fields = [ 
     'first_name', 
     'profile_pic', 
     'location', 
     'title', 
     'user_type', 
     'website', 
     'about', 
     'twitter', 
     'dribbble', 
     'github' 
     ] 
    template_name_suffix = '_edit_form' 

    def get_success_url(self): 
     userid = self.kwargs['pk'] 
     return reverse_lazy('users:user_profile', kwargs={'pk': userid}) 
+0

pkを提供する必要があるが、それは私の名前のエラーを与える: 'NameError:名前「PK」を – Garrett

+0

が、これは動作するはずな外観を持ってdefined'されていません。 –

+0

これでうまくいきましたので、私はちょうど 'get_success_url'メソッドを使ってpkを確立し、それを返す必要がありました。ありがとうございました。 – Garrett

関連する問題