简体   繁体   English

未找到参数为 &#39;(&#39;&#39;,)&#39; 的 &#39;post-detail&#39; 的 Django Reverse。 尝试了 1 个模式:[&#39;post\\\\/(?P<pk> [0-9]+)\\\\/$&#39;]

[英]Django Reverse for 'post-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['post\\/(?P<pk>[0-9]+)\\/$']

I am working on a personal fitness blog app and am running into this error when trying to allow a user to "comment" on a post.我正在开发一个个人健身博客应用程序,并在尝试允许用户对帖子“发表评论”时遇到此错误。

Python 3.6.4, Django 3.0.2 Python 3.6.4,Django 3.0.2

models.py模型.py

class Comment(models.Model):
    post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
    comment_id = models.AutoField(primary_key=True)
    author = models.ForeignKey(Profile, on_delete=models.CASCADE)
    content = models.TextField(max_length=1000, blank=False, default="")
    date_posted = models.DateTimeField(default=timezone.now)

    class Meta:
        ordering = ['date_posted']

    def __str__(self):
        return 'Comment {} by {}'.format(self.content, self.author.first_name)

urls.py网址.py

urlpatterns = [
    # path('', views.home, name="main-home"),
    path('', PostListView.as_view(), name="main-home"),
    path('admin/', admin.site.urls),
    path('register/', views.register, name="register"),
    path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
    path('post/new/', PostCreateView.as_view(), name='post-create'),
    path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),
    path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),
    path('about/', views.about, name="main-about"),
    path('search/', SearchResultsView.as_view(), name="main-search"),
    path('post/<int:pk>/comment/', views.add_comment_to_post, name='add_comment_to_post'),
]

post_detail.html post_detail.html

{% extends "main/base.html" %}

{% block content %}
    <article class="media content-section">
      <div class="media-body">
        <div class="article-metadata">
          <a class="mr-2" href="#">{{ object.author }}</a>
          <small class="text-muted">{{ object.date_posted }}</small>
        </div>
        <h2 class="article-title"><u>{{ object.title }}</u></h2>
        <p class="article-content">{{ object.content }}</p>
        <div class="row">
          <div class="col-xs-6 col-sm-4"><b>Distance: </b>{{ object.distance }} miles</div>
          <div class="col-xs-6 col-sm-4"><b>Time: </b>{{ object.time }} minutes</div>
          <div class="clearfix visible-xs-block"></div>
          <div class="col-xs-6 col-sm-4"><b>Pace: </b>{{ object.pace }} mins/mile</div>
        </div>
      </div>
    </article>
    <hr>
        <a class="btn btn-default" href="{% url 'add_comment_to_post' pk=post.pk %}">Add comment</a>

        {% for comment in post.comments.all %}
            <div class="comment">
                <div class="date">{{ comment.date_posted }}</div>
                <strong>{{ comment.author }}</strong>
                <p>{{ comment.content|linebreaks }}</p>
            </div>
        {% empty %}
            <p>No comments here yet :(</p>
        {% endfor %}
    </hr>
{% endblock content %}

add_comment_to_post.html - form where I am trying to save the user input and return to the post-detail view when the user hits 'send' add_comment_to_post.html - 我试图保存用户输入并在用户点击“发送”时返回到后期细节视图的表单

{% extends "main/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <h1>New comment</h1>
    <form method="POST">
        {% csrf_token %}
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">New Comment</legend>
            {{ form|crispy }}
        </fieldset>
        <div class="form-group">
            <!-- Trying to link back to post-detail after 'send'>
            <a class="btn btn-outline-info" href="{% url 'post-detail' object.id %}">Send</a>
        </div>
    </form>
{% endblock %}

views.py - line giving me error is the "return render(request, 'main/add_comment_to_post.html', {'form': form})" views.py - 给我错误的行是“返回渲染(请求,'main/add_comment_to_post.html',{'form':form})”

def add_comment_to_post(request, pk):

    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST":
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.save()
            return redirect('post_detail', pk=post.pk)
    else:
        form = CommentForm()
    return render(request, 'main/add_comment_to_post.html', {'form': form})

traceback error回溯错误

Template error:
In template /Users/parkermitchell/Desktop/307-Sec03-Team03/runn/main/templates/main/base.html, error at line 12
   Reverse for 'post-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['post\\/(?P<pk>[0-9]+)\\/$']
   2 : 
   3 : <!DOCTYPE html>
   4 : <html>
   5 : <head>
   6 : 
   7 :     <!-- Required meta tags -->
   8 :     <meta charset="utf-8">
   9 :     <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   10 : 
   11 :     <!-- Bootstrap CSS -->
   12 :     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFc JlSAwiGgFAW/dAiS6JXm" crossorigin ="anonymous">
   13 : 
   14 :     <!-- More CSS (from Django tutorial) -->
   15 :     <link rel="stylesheet" type="text/css" href="{% static 'main/main.css' %}">
   16 : 
   17 :     {% if title %}
   18 :         <title>Runn - {{ title }}</title>
   19 :     {% else %}
   20 :         <title>Runn</title>
   21 :     {% endif %}
   22 : 


Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/parkermitchell/Desktop/307-Sec03-Team03/runn/main/views.py", line 39, in add_comment_to_post
    return render(request, 'main/add_comment_to_post.html', {'form': form})
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/template/defaulttags.py", line 443, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/urls/base.py", line 87, in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/urls/resolvers.py", line 677, in _reverse_with_prefix
    raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /post/3/comment/
Exception Value: Reverse for 'post-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['post\\/(?P<pk>[0-9]+)\\/$']

The problem问题

When I click "Add comment" on the post detail page, I get the mentioned error.当我在帖子详细信息页面上单击“添加评论”时,出现上述错误。

What I have tried我试过的

I tried editing the urls/paths within the files我尝试编辑文件中的网址/路径

I tried changing the view我尝试改变视图

I have read What is a NoReverseMatch error, and how do I fix it?我已阅读什么是 NoReverseMatch 错误,我该如何解决? on StackOverflow and as many topics as I could find.在 StackOverflow 上以及我能找到的尽可能多的主题。

Any help is appreciated.任何帮助表示赞赏。 Thank you in advance!先感谢您!

您没有将post作为上下文传递给模板

  return render(request, 'main/add_comment_to_post.html', {'form': form,'post':post})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 未找到 arguments '('',)' 的 'post_edit' 反向。 尝试了 1 种模式:['post/(?P<pk> [0-9]+)/编辑/$']</pk> - Reverse for 'post_edit' with arguments '('',)' not found. 1 pattern(s) tried: ['post/(?P<pk>[0-9]+)/edit/$'] 使用参数 &#39;(&#39;&#39;,)&#39; 和关键字参数 &#39;{}&#39; 未找到的 &#39;post_detail&#39; 反转。 尝试了 1 个模式:[&#39;posts/(?P[0-9]+)/$&#39;] - Reverse for 'post_detail' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['posts/(?P[0-9]+)/$'] 未找到 arguments '('',)' 的 'delete_post' 反向。 尝试了 1 种模式:['article/(?P<pk> [0-9]+)/删除$']</pk> - Reverse for 'delete_post' with arguments '('',)' not found. 1 pattern(s) tried: ['article/(?P<pk>[0-9]+)/remove$'] NoReverseMatch Reverse for 'save-post' with arguments '('',)' not found. 尝试了 1 种模式:['save/(?P<pk> [0-9]+)$']</pk> - NoReverseMatch Reverse for 'save-post' with arguments '('',)' not found. 1 pattern(s) tried: ['save/(?P<pk>[0-9]+)$'] 找不到带有参数“(&#39;&#39;,)”的“ news_detail”。 尝试了1个模式:[&#39;news \\\\-(?P <news_pk> [0-9] +)$&#39;] - Reverse for 'news_detail' with arguments '('',)' not found. 1 pattern(s) tried: ['news\\-(?P<news_pk>[0-9]+)$'] .NoReverseMatch:未找到参数为 &#39;(&#39;&#39;,)&#39; 的 &#39;author-detail&#39; 反转。 尝试了 1 个模式:[&#39;目录/作者/(?P<pk> [0-9]+)$&#39;] - .NoReverseMatch: Reverse for 'author-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['catalog/author/(?P<pk>[0-9]+)$'] 未找到 arguments '('',)' 的 'book-detail' 反向。 尝试了 1 种模式:['catalog/book/(?P<pk> [0-9]+)$']</pk> - Reverse for 'book-detail' with arguments '('',)' not found. 1 pattern(s) tried: ['catalog/book/(?P<pk>[0-9]+)$'] 未找到 arguments '('',)' 的 'article_detail' 反向。 尝试了 1 种模式:['article/(?P<pk> [0-9]+)$']</pk> - Reverse for 'article_detail' with arguments '('',)' not found. 1 pattern(s) tried: ['article/(?P<pk>[0-9]+)$'] 找不到带有关键字参数&#39;{&#39;pk&#39;:&#39;&#39;}&#39;的&#39;ques_detail&#39;。 尝试了1个模式:[&#39;ques_detail /(?P <pk> [0-9] +)/ $&#39;] - Reverse for 'ques_detail' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['ques_detail/(?P<pk>[0-9]+)/$'] 反转“forum_post”,没有找到任何参数。 尝试了 1 个模式:[&#39;forumpost/(?P<pk> [0-9]+)/$&#39;] 我该怎么做才能解决这个问题? - Reverse for 'forum_post' with no arguments not found. 1 pattern(s) tried: ['forumpost/(?P<pk>[0-9]+)/$'] How can I do to solve the problem?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM