/ products /处的NoReverseMatch,“产品”不是注册的名称空间

时间:2019-02-17 20:28:07

标签: django python-3.x

我正在Django中制作2个应用。第一个称为“产品”,第二个称为“博客”。 我做了第一个,一切都正常工作,但是当我添加了第二个时,两者都没有工作

urls.py

path('products/', include('products.urls')),
path('blog/', include('blog.urls')),

blog \ urls.py

app_name = 'articles'
urlpatterns = [
   path('<int:id>/', article_detail_view, name='article_detail'), ]

products \ urls.py

app_name = 'products'
urlpatterns = [
   path('<int:id>/', product_detail_view, name='product_detail'), ]

有关代码的更多详细信息: src> blog:{模板>文章> article_create.html和article_detail.html和article_list.html,表格 ,模型,网址,视图},产品{模板>产品> product_create.html和product_detail.html和product_list.html,表格 ,模型,网址,视图}

article_create.html和product_create.html包含相同的代码:

{% extends 'base.html' %}

{% block content %}
<form method="post"> {% csrf_token %}
    {{ form.as_p }}
<input type="submit" , value="Save">

</form>
{% endblock  %}

blog \ models:

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

class Article(models.Model) :
    title = models.CharField(max_length=130)
    content = models.TextField(blank=True, null=True)
    active= models.BooleanField(default=True)

    def get_absolute_url(self):
       return  reverse("articles : article_detail",kwargs={"id":self.id})

博客\网址:

from django.contrib import admin
from django.urls import path

from blog.views import (
    article_detail_view,
    article_create_view,
    article_list_view,
)
app_name = 'blog'
urlpatterns = [


    path('<int:id>/', article_detail_view, name='article_detail'),
    path('create/', article_create_view, name='article_create'),
    path('', article_list_view, name='article_list'),

]

博客\视图:

from django.shortcuts import render , get_object_or_404 , redirect
from django.views.generic import CreateView , DeleteView , DetailView , ListView , 
UpdateView
from .models import Article
from .forms import ArticleForm


def article_detail_view(request,id):
    obj=get_object_or_404(Article,id=id)
    context = {
        'object' : obj
    }
    return render( request , "articles/article_detail.html" , context )


def article_create_view(request):
    form=ArticleForm(request.POST or None)
    if form.is_valid():
        form.save()
        form = ArticleForm()
    context = {
        'form' : form
    }
    return render( request , "articles/article_create.html" , context )


def article_list_view(request):
    queryset = Article.objects.all()   #list of objects
    context = {
'object_list' : queryset
}
return render( request , "articles/article_list.html" , context )

INSTALLED_APPS包含“产品”和“博客”

我在产品文件(products \ urls和product \ views ...)中加上了相同的代码,当然也进行了更改

我希望我现在就对你说清楚。

1 个答案:

答案 0 :(得分:0)

原因是,对于应用程序产品,您的命名空间默认为“产品”,但对于应用程序博客,您正在使用将应用程序指定为“商品”

app_name应该是您的应用的实际名称

app_name = 'blog'
urlpatterns = [
    path('<int:id>/', article_detail_view, name='article_detail'), ]