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 变量。
我的代码在下面,如果我通过上下文传递帖子数据,我会得到 "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 变量。