我是一个初学者在学习代码,并正在努力使一个简单的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[^/]+)/$']
6条答案
按热度按时间qaxu7uf21#
错误似乎发生在
确保你循环的每个
posts
都有作者,并且每个作者都有用户名。如果post.author.username
是None
,Django将无法正确构造url。dfddblmv2#
在此URL中:配置文件名称=“profile”
你有没有一个叫“配置文件”视图?
那么str:name中的name指的是什么?可能是用户名?还是作者
您需要提供更多详细信息,
4c8rllxm3#
这是因为你有一个项目与作者我面临着类似的问题。
6l7fqoea4#
也许你需要检查你的管理面板,如果有一个职位没有作者,这可能是问题
06odsfpq5#
找不到参数为'(',)'的'profile'的/ Reverse处的NoReverseMatch。已尝试1个模式:['配置文件/(?P[^/]+)/$']
这意味着你在循环中工作的数据库中缺少了一些东西。如果空白的话Django将无法正确地构建url。首先到Django的承认面板,找到缺少的东西。例如:作者,用户,管理员等。
6qfn3psc6#
如果你定义了一个帖子而没有给它分配一个配置文件(所有者),你会得到这个错误。换句话说,Django想要的东西(在你的数据库中)是空白的!
你必须去管理面板,并检查所有已定义的职位,他们都不应该没有一个所有者.