我正在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 ...)中加上了相同的代码,当然也进行了更改
我希望我现在就对你说清楚。
答案 0 :(得分:0)
原因是,对于应用程序产品,您的命名空间默认为“产品”,但对于应用程序博客,您正在使用将应用程序指定为“商品” >
app_name应该是您的应用的实际名称
app_name = 'blog'
urlpatterns = [
path('<int:id>/', article_detail_view, name='article_detail'), ]