django 找不到参数为'(',)'之'profile'的/ Reverse处的NoReverseMatch,已尝试1个模式:['配置文件/(?P < name>[^/]+)/$']

ca1c2owp  于 2022-12-05  发布在  Go
关注(0)|答案(6)|浏览(109)

我是一个初学者在学习代码,并正在努力使一个简单的django网站,用户可以写评论,但我不断得到这个错误
我的urls.py

from django.urls import path

from . import views

urlpatterns = [
    path("", views.index, name="index"),
    path("login", views.login_view, name="login"),
    path("logout", views.logout_view, name="logout"),
    path("register", views.register, name="register"),
    path("profile/<str:name>/", views.profile, name="profile")
]

views.py

class NewPostForm(forms.Form):
    title = forms.CharField(label="Title")
    description = forms.CharField(widget=forms.Textarea)

def index(request):
    if request.method == "POST":
        form = NewPostForm(request.POST)
        if form.is_valid():
            title = form.cleaned_data['title']
            description = form.cleaned_data['description']
            author = request.user

            post = NewPost(title=title, description=description, author=author)
            post.save()
            return HttpResponseRedirect(reverse("index"))
        else:
            return render(request, "network/index.html", {
                "form": form
            })

    return render(request, "network/index.html", {
        "form": NewPostForm(),
        "posts": NewPost.objects.all()
    })

models.py

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    pass

class NewPost(models.Model):
    title = models.CharField(max_length=32)
    description = models.CharField(max_length=256)
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True)

和我的index.html

{% extends "network/layout.html" %}

{% load static %}
{% load crispy_forms_tags %}

{% block body %}
    <div class="form-group">
        <form method="post" action="{% url 'index' %}">
            {% csrf_token %}
            {{form | crispy}}
            <button class="btn btn-primary"> Post </button>
        </form>
    </div>

    {% for post in posts %}
        <div class="card">
            <div class="card-body"> Title: {{post.title}} </div>
            <div class="card-body"> Description: {{post.description}}</div>
            <p> {{post.author.username}} </p>
            <div class="card-body">
                <a href="{% url 'profile' post.author.username %}">
                    @{{post.author.username}}
                </a>
            </div>
        </div>
    {% endfor %}
{% endblock %}

但我一直
找不到参数为'(',)'之'profile'的/ Reverse处的NoReverseMatch。已尝试1个模式:['配置文件/(?P[^/]+)/$']

qaxu7uf2

qaxu7uf21#

错误似乎发生在

<a href="{% url 'profile' post.author.username %}">

确保你循环的每个posts都有作者,并且每个作者都有用户名。如果post.author.usernameNone,Django将无法正确构造url。

dfddblmv

dfddblmv2#

在此URL中:配置文件名称=“profile”
你有没有一个叫“配置文件”视图?
那么str:name中的name指的是什么?可能是用户名?还是作者
您需要提供更多详细信息,

4c8rllxm

4c8rllxm3#

这是因为你有一个项目与作者我面临着类似的问题。

6l7fqoea

6l7fqoea4#

也许你需要检查你的管理面板,如果有一个职位没有作者,这可能是问题

06odsfpq

06odsfpq5#

找不到参数为'(',)'的'profile'的/ Reverse处的NoReverseMatch。已尝试1个模式:['配置文件/(?P[^/]+)/$']

这意味着你在循环中工作的数据库中缺少了一些东西。如果空白的话Django将无法正确地构建url。首先到Django的承认面板,找到缺少的东西。例如:作者,用户,管理员等。

6qfn3psc

6qfn3psc6#

如果你定义了一个帖子而没有给它分配一个配置文件(所有者),你会得到这个错误。换句话说,Django想要的东西(在你的数据库中)是空白的
你必须去管理面板,并检查所有已定义的职位,他们都不应该没有一个所有者.

相关问题