1

function based viewclass based viewに書き直そうとしています。それは、このエラーが発生します。クラスビューの戻り値オブジェクトに属性 'rindex'エラーがありません

.../test/User1 

'UserDetailView' object has no attribute 'rindex'

問題はおそらく明白である、私はclass based viewsに新たなんです。

URLを使用してプロファイルを取得するにはどうすればよいですか.../test/username

私の新しいビュー:

class UserDetailView(DetailView): 
    model = User 
    def get_object(self, queryset=None): 
     return get_object_or_404(self.model, pk=self.kwargs["pk"]) 

URLS.PY:

url(r'^test/(?P<username>[a-zA-Z0-9]+)/$', views.UserDetailView(),name="user_detail"), 

テンプレート:

def get_user_profile(request, username): 
    user = User.objects.get(username=username) 

    jobs = user.jobs.all() 
    table = MyJobsTable(jobs) 

    context = { 
     'my_jobs': table, 
     "user": user 
    } 
    return render(request, 'auth/profiles/my-profile.html', context=context) 

{% extends "base.html" %} 

{% block content %} 

{{ userprofile.as_p }} 
{% endblock %} 

私の古いビューがこれです

そしてHTML:

{% extends 'base.html' %} 
{% load crispy_forms_tags %} 
{% load render_table from django_tables2 %} 
{% block content %} 
    {% if user.is_authenticated %} 
     <h3>{% if user.userprofile.is_translator %} Prekladateľský účet: {% else %} Štandardný 
      účet: {% endif %}{{ user.username }} </h3> 
     <ul> 
      <li>Username: {{ user.username }}</li> 
      <li>First name: {{ user.first_name }}</li> 
      <li>Last name: {{ user.last_name }}</li> 
      <li>Email: {{ user.email }}</li> 
      <li>Telephone: {{ user.userprofile.telephone }}</li> 
      <li>Languages: {{ user.userprofile.languages.as_p }}</li> 
      {#   TODO: DOPLNIT ATRIBUTY + ked je aj translator#} 
     </ul> 
     {% if user.jobs %} 
      <p>My Jobs</p> 
      {% render_table my_jobs %} 
     {% else %} 
      <p>You have no jobs</p> 
     {% endif %} 
     <form class="navbar-form navbar-right" action="/edit-profile" method="get"> 
      <button type="submit" class="btn btn-success">Edit Your Profile</button> 
     </form> 
     <form class="navbar-form navbar-right" action="/register-as-translator" method="get"> 
      <button type="submit" class="btn btn-success">Become A Translator</button> 
     </form> 
    {% endif %} 
{% endblock %} 

URLS.PY:

url(r'^profile/(?P<username>[a-zA-Z0-9]+)/$', views.get_user_profile) 

答えて

1

問題は、あなたのurls.py.でありますクラスベースのビューを使用すると、常にas_view classmethod使用する必要があります。

url(r'^test/(?P<username>[a-zA-Z0-9]+)/$', views.UserDetailView.as_view(), name="user_detail"), 
+0

おかげで、これは動作しているようですが、それは今、別のエラーが発生します:一般的な詳細ビューのUserDetailViewがオブジェクトPKやスラグのいずれかで呼び出さなければなりません。私はユーザー名を使用することはできませんが、スラッグを使用する方法は?それとも別の問題ですか? –

+0

あなたのクラス定義に 'slug_field = 'username''と' slug_url_kwarg =' username''を設定してください。そして、あなたの 'get_object'メソッドは壊れていますが、無意味です。削除する必要があります。 –

関連する問題