问题描述
我正在尝试使用其内置框架 django-sitemaps 将站点地图添加到我的 Django 网站。我相信我已经根据(有时难以理解)documentation 正确设置了所有内容,但是现在当我尝试 runserver
时出现以下错误:
[...snip...]
File "E:\Programming\my_project\my_project\urls.py",line 7,in <module>
from sitemaps import StaticViewsSitemap
File "E:\Programming\my_project\some_app\sitemaps.py",line 2,in <module>
from models import Story
File "E:\Programming\my_project\some_app\models.py",line 18,in <module>
class Category(models.Model):
File "E:\Programming\my_project\venv\lib\site-packages\django\db\models\base.py",line 113,in __new__
raise RuntimeError(
RuntimeError: Model class models.Category doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
有问题的模型是 some_app
的一部分,它绝对是在 INSTALLED_APPS
中,它已经工作了几个月,我丝毫没有接触过它,并且如果我注释掉与站点地图相关的所有内容,它会像到目前为止一样完美地工作。该模型只是 models.py
中声明的第一个模型。我认为该错误与导入和构建站点地图时未初始化项目的正确部分有关。
这是包含相关文件的项目目录树:
my_project
├ my_project
│ ├ ...
│ ├ urls.py
│ └ sitemaps.py
├ some_app
│ ├ ...
│ ├ models.py
│ ├ urls.py
│ └ sitemaps.py
├ some_app2
│ ├ ...
│ ├ models.py
│ ├ urls.py
│ └ sitemaps.py
└ some_app3
├ ...
├ models.py
├ urls.py
└ sitemaps.py
这里是主要的url.py
:
from django.contrib.sitemaps import views
from sitemaps import StaticViewsSitemap
import some_app.sitemaps as some_app
import some_app2.sitemaps as some_app2
import some_app3.sitemaps as some_app3
sitemaps = {
"static": StaticViewsSitemap,"some_app": some_app.sitemap,"some_app2": some_app2.sitemap,"some_app3": some_app3.sitemap,}
sitemap_urls = [
path("sitemap.xml",views.index,{"sitemaps": sitemaps}),path("sitemap-<section>.xml",views.sitemap,{"sitemaps": sitemaps},name="django.contrib.sitemaps.views.sitemap"),]
urlpatterns = [
...,*sitemap_urls,]
my_project.sitemaps.py
:
from django.contrib.sitemaps import Sitemap
from django.urls import reverse
class StaticViewsSitemap(Sitemap):
priority = 0.5
changefreq = "daily"
def items(self):
return [
"some_app:some_static_route","some_app2:other_static_route","some_app3:another_static_route",]
def location(self,item):
return reverse(item) # NOTE: I also tried with reverse_lazy() to no avail
some_app.sitemaps.py
(其他都相似):
from django.contrib.sitemaps import GenericSitemap
from models import Story
sitemap = GenericSitemap(
{
"queryset": Story.objects.filter(draft=False,secret=False),"date_field": "date",},protocol="https",changefreq="weekly",priority=0.7,)
请注意,错误中的模型 some_app.models.Category
并未直接被任何站点地图提及:它只是 Story
的外键。即使我注释掉与 some_app
相关的任何内容,只要有任何东西从 django.contrib.sitemaps
导入某些内容,错误就会不断发生。
我可能遗漏了一些明显的东西,但我以前从未使用过 django-sitemaps,所以我不知道。我想我已经正确地遵循了文档。
我使用的是 Django 3.1.2 版。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)