首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoReverseMatch at /products/,“products”不是已注册名称空间

NoReverseMatch at /products/,“products”不是已注册名称空间
EN

Stack Overflow用户
提问于 2019-02-17 20:28:07
回答 1查看 391关注 0票数 0

我用Django制作了两个应用程序。第一个叫做“产品”,第二个叫做“博客”。我做了第一个,一切正常工作,但当我添加第二个,两者都没有工作

urls.py

代码语言:javascript
复制
path('products/', include('products.urls')),
path('blog/', include('blog.urls')),

blog\urls.py

代码语言:javascript
复制
app_name = 'articles'
urlpatterns = [
   path('<int:id>/', article_detail_view, name='article_detail'), ]

products\urls.py

代码语言:javascript
复制
app_name = 'products'
urlpatterns = [
   path('<int:id>/', product_detail_view, name='product_detail'), ]

关于代码的更多详细信息: src>博客:{ templates >文章> article_create.html和article_detail.html和article_list.html、窗体、模型、urls、视图}、产品{模板>产品> product_create.html和product_detail.html和product_list.html、窗体、模型、urls、视图}

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

代码语言:javascript
复制
{% extends 'base.html' %}

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

</form>
{% endblock  %}

blog\模型:

代码语言:javascript
复制
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})

blog\urls:

代码语言:javascript
复制
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'),

]

博客\视图:

代码语言:javascript
复制
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和products.)放置了相同的代码,当然还有更改。

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

EN

回答 1

Stack Overflow用户

发布于 2019-02-17 23:16:24

原因是,对于app products,您的名称空间默认为“products”,但是对于应用程序blog,您使用的是将应用程序指定为“文章”。

app_name应该是应用程序的实际名称。

代码语言:javascript
复制
app_name = 'blog'
urlpatterns = [
    path('<int:id>/', article_detail_view, name='article_detail'), ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54737397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档