Django 站点地图导致随机模型运行时错误

问题描述

我正在尝试使用其内置框架 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...