Есть ли какие-то конкретные c way Django переменные URL? - PullRequest
0 голосов
/ 07 мая 2020

Мой код ниже, если я передаю данные сообщений через контекст, я получаю «Обратный для 'user_profil' not found. 'User_profil' не является допустимой функцией просмотра или именем шаблона». без «контекста» я не получаю ошибки. Я прочитал много комментариев, но никто не указывает на эту проблему!

Если кто-то может мне помочь, я буду рад!

функция просмотра:

def user_profil(request,  username):

    posts = postList.objects.all().filter(author__username__icontains=username)

    context = {}
    context['posts'] = posts

    return render(request, 'profile.html', context=context)

Шаблоны URL:

urlpatterns = [
    path('', postlist_view.home, name='home'),
    path('signup', core_view.signup, name='signup'),
    path('accounts/', include('django.contrib.auth.urls')),
    path('admin/', admin.site.urls),
    path('article/upload/', article_view.upload, name='article-upload'),
    path('article/list/', article_view.list, name='article-list'),
    path('article/<int:pk>/', article_view.delete_article, name='delete_article'),
    path('post/<int:id>/detail/', postlist_view.post_detail, name='post_detail'),
    path('post/<int:id>/update/', postlist_view.post_update, name='post_update'),
    path('post/<int:id>/delete/', postlist_view.post_delete, name='post_delete'),
    path('post/create/', postlist_view.post_create, name='post_create'),
    path('profil/<usernaname>/',
         postlist_view.user_profil, name='page_of_user'),
    path('accounts/logout', core_view.signOut, name='logout'),



дом. html

<form method="post">
 <a href="{% url 'page_of_user' username=post.author %}"><h3>{{post.author}}</h3></a></form>

профиль. html

 <form method="post"><a href="{% url 'page_of_user' username=post.author %}"><h3>{{post.author}}</h3></a></form>`
   <a href="{% url 'user_profil'%}"><h3>{{post.author}}</h3></a>

Ошибка

Traceback (most recent call last):
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/alex/Documents/python_programming/vitor/filesystem/postlist/views.py", line 95, in user_profil
    return render(request, 'profile.html', context=context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/defaulttags.py", line 209, in render
    nodelist.append(node.render_annotated(context))
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/template/defaulttags.py", line 443, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/urls/base.py", line 87, in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
  File "/home/alex/Documents/python_programming/vitor/vit/lib/python3.7/site-packages/django/urls/resolvers.py", line 677, in _reverse_with_prefix
    raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'user_profil' not found. 'user_profil' is not a valid view function or pattern name.

Ответы [ 3 ]

3 голосов
/ 07 мая 2020
<a href="{% url 'user_profil'%}"><h3>{{post.author}}</h3></a>

Это ваша ссылка с ошибкой, именованный URL-адрес 'user_profil' отсутствует в вашем urls.py Когда вы передаете URL-адрес в шаблон с использованием синтаксиса {% URL %}, шаблон искал путь URL-адреса с именем указано. В вашем urls.py нет URL с таким именем.

2 голосов
/ 07 мая 2020

Кажется, проблема в этой строке кода:

<a href="{% url 'user_profil'%}"><h3>{{post.author}}</h3></a>

Из urlpatterns, который вы предоставили, похоже, не существует URL-адреса с именем 'user_profil'. Вместо этого вы можете использовать тот же href, что и другой тег привязки, как показано ниже:

<a href="{% url 'page_of_user' username=post.author %}"><h3>{{post.author}}</h3></a>

Изменить: Спасибо Alasdair за указание на опечатку в этой строке:

path('profil/<usernaname>/', postlist_view.user_profil, name='page_of_user'),

Вам необходимо сопоставить параметр url с тем, который используется в теге url в HTML, поэтому вы должны изменить его на:

path('profil/<username>/', postlist_view.user_profil, name='page_of_user'),
0 голосов
/ 07 мая 2020

используйте

<form method="post">
 <a href="{% url 'page_of_user' post.author.username %}"><h3>{{post.author}}</h3></a></form>

вместо

<form method="post">
 <a href="{% url 'page_of_user' username=post.author %}"><h3>{{post.author}}</h3></a></form>

, и я надеюсь, что вы зацикливаете сообщения, чтобы получить переменную сообщения.

...