1
function based view
をclass 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)
おかげで、これは動作しているようですが、それは今、別のエラーが発生します:一般的な詳細ビューのUserDetailViewがオブジェクトPKやスラグのいずれかで呼び出さなければなりません。私はユーザー名を使用することはできませんが、スラッグを使用する方法は?それとも別の問題ですか? –
あなたのクラス定義に 'slug_field = 'username''と' slug_url_kwarg =' username''を設定してください。そして、あなたの 'get_object'メソッドは壊れていますが、無意味です。削除する必要があります。 –