Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django 2.2 NoReverseMatch错误,kwargs返回空字符串?_Python_Django - Fatal编程技术网

Python Django 2.2 NoReverseMatch错误,kwargs返回空字符串?

Python Django 2.2 NoReverseMatch错误,kwargs返回空字符串?,python,django,Python,Django,我得到一个NoReverseMatch错误,kwargs的字符串为空。我是否在models.py文件中做了一些错误的事情,该文件没有保存与帖子相关联的用户名 NoReverseMatch at/groups/posts/in/nasa rocks/Reverse为“for_user” 找不到具有关键字参数“{'username':''}”。1幅(s) 已尝试:['posts/by/(?P[^/]+)/$”] models.py: from django.db import models from

我得到一个NoReverseMatch错误,kwargs的字符串为空。我是否在models.py文件中做了一些错误的事情,该文件没有保存与帖子相关联的用户名

NoReverseMatch at/groups/posts/in/nasa rocks/Reverse为“for_user” 找不到具有关键字参数“{'username':''}”。1幅(s) 已尝试:['posts/by/(?P[^/]+)/$”]

models.py:

from django.db import models
from django.urls import reverse
from django.conf import settings

# Create your models here.

import misaka

from groups.models import Group

from django.contrib.auth import get_user_model
User = get_user_model()

class Post(models.Model):
    user = models.ForeignKey(User,related_name='posts',on_delete='CASCADE')
    group = models.ForeignKey(Group,related_name='posts',null=True,blank=True,on_delete='CASCADE')
    created_at = models.DateTimeField(auto_now=True)
    message = models.TextField()
    message_html = models.TextField(editable=False)

    def __str__(self):
        return self.message

    def save(self,*args,**kwargs):
        self.message_html = misaka.html(self.message)
        super().save(*args,**kwargs)

    def get_absolute_url(self):
        return reverse('posts:detail',kwargs={'username':self.user.username,'pk':self.pk})

    class Meta:
        ordering = ['-created_at']
        unique_together = ['user','message']
URL.py:

from django.urls import path

from . import views

app_name = 'posts'

urlpatterns = [
    path('',views.PostListView.as_view(),name='list'),
    path('create/',views.PostCreateView.as_view(),name='create'),
    path('by/<username>/',views.UserPosts.as_view(),name='for_user'),
    path('by/<username>/<pk>/',views.PostDetailView.as_view(),name='detail'),
    path('delete/<pk>/',views.PostDeleteView.as_view(),name='delete')
]
_post.html:

<div class="post media">
  <h3>{{post.message_html|safe}}</h3>
  <div class="media-body">
    <strong>{{post.user.username}}</strong>
    <h5 class="media-heading">
      <span class="username">
                <a href="{% url 'posts:for_user' username=post.user.username %}">@{{ post.user.username }}</a>
            </span>
            <time class="time">
                <a href="{% url 'posts:detail' username=post.user.username pk=post.pk %}">{{ post.created_at }}</a>
            </time>
      {% if post.group %}
      <span class="group-name">in <a href="#">{{ post.group.name }}</a></span>
      {% endif %}

    </h5>
    <div class="media-footer">
      {% if user.is_authenticated and post.user == user %}
        <a href="{% url 'posts:delete' pk=post.pk %}" title='delete' class="btn btn-simple">
          <span class="fas fa-trash-alt text-danger" aria-hidden="True"></span>
          <span class="text-danger icon-label">Delete</span>
        </a>
      {% endif %}
    </div>
  </div>
</div>

{{post.message_html | safe}}
{{post.user.username}}
{%if post.group%}
在里面
{%endif%}
{%if user.u经过身份验证且post.user==user%}
{%endif%}

据我所知,问题是用户名为空。默认模式要求它至少是一个符号
['posts/by/(?P[^/]+)/$”]
。所以很可能您没有正确获取模型,或者没有用户发布


顺便说一下,这个错误非常详细。它显示模式和参数,您需要仔细阅读。

您能看到
标记之间的用户名吗?@Selcuk不,它也不显示在那里。这是您的问题,它与URL无关。你有帖子吗?你能看到任何
post.message\u html
文本吗?另外,您还没有发布导致错误发生的URL的URL和视图:
groups/posts/in/nasa rocks/
哪个视图负责呈现_post.html?@Selcuk如果我在用户名中硬编码,但不使用变量post.user.username,我可以看到一些东西
<div class="post media">
  <h3>{{post.message_html|safe}}</h3>
  <div class="media-body">
    <strong>{{post.user.username}}</strong>
    <h5 class="media-heading">
      <span class="username">
                <a href="{% url 'posts:for_user' username=post.user.username %}">@{{ post.user.username }}</a>
            </span>
            <time class="time">
                <a href="{% url 'posts:detail' username=post.user.username pk=post.pk %}">{{ post.created_at }}</a>
            </time>
      {% if post.group %}
      <span class="group-name">in <a href="#">{{ post.group.name }}</a></span>
      {% endif %}

    </h5>
    <div class="media-footer">
      {% if user.is_authenticated and post.user == user %}
        <a href="{% url 'posts:delete' pk=post.pk %}" title='delete' class="btn btn-simple">
          <span class="fas fa-trash-alt text-danger" aria-hidden="True"></span>
          <span class="text-danger icon-label">Delete</span>
        </a>
      {% endif %}
    </div>
  </div>
</div>