Django URL 变量有什么具体的方法吗?

Is there any specific way Django URL variables?

我的代码在下面,如果我通过上下文传递帖子数据,我会得到 "Reverse for 'user_profil' not found. 'user_profil' is not a valid view function or pattern name." 没有任何 "context",我没有得到任何错误。 看了很多评论都没有人指出这个问题!

如果有人能帮助我,我将很高兴!

查看函数:

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_patterns:

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'),



home.html

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

profile.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.
<a href="{% url 'user_profil'%}"><h3>{{post.author}}</h3></a>

这是你的错误 link,你的 urls.py 中不存在名为 URL 的 'user_profil' 当您使用 {% URL %} 语法将 URL 传递给模板时,模板会搜索具有指定名称的 URL 路径。 在您的 urls.py 中,没有 URL 具有该名称。

这行代码似乎是问题所在:

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

从您提供的 urlpatterns 来看,似乎没有名称为 'user_profil' 的 url。相反,您可能希望使用与其他锚标记相同的 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 参数与 HTML 中 url 标记中使用的参数相匹配,因此您应该将其更改为:

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

使用

<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>

我希望您循环 posts 以获得 post 变量。