【问题标题】:in django app when splitting view.py file I am getting issues with url.py在 django 应用程序中拆分 view.py 文件时,我遇到了 url.py 的问题
【发布时间】:2016-08-29 03:30:08
【问题描述】:

所以我的视图文件变得很大,我决定将其拆分为更小的部分 关注这个answer

我创建了一个views文件夹,在这个文件夹下创建了几个view...py文件

以前存在的东西在拆分后仍然有效,但现在当我尝试创建新的视图文件时,我在 url 文件中遇到问题

这是我的 _init_.py 文件,位于我的视图文件夹中

from views import *
from viewscategory import * 
from viewssubcategory import *
from viewsitemgroup import *
from viewsmaterial import *
from viewsbomversion import *
from viewsbom import *
from viewsapprovedmanufacture import *

这是我的 url 文件相关部分

from django.conf.urls import url, include,patterns
import item.views
from views import *

urlpatterns = patterns('item.views',

    url(r'^approvedmanufacture/new/(?P<pk>\d+)/(?P<uri>\S+)/$', item.views.approvedmanufacture_new, name="approvedmanufacture_new"),
    url(r'^approvedmanufacture/edit/(?P<pk>\d+)/(?P<uri>\S+)/$', item.views.approvedmanufacture_edit, name="approvedmanufacture_edit"),
    url(r'^approvedmanufacture/delete/(?P<pk>\d+)/(?P<uri>\S+)/$', item.views.approvedmanufacture_delete, name="approvedmanufacture_delete"),
    url(r'^approvedmanufacture/approvedmanufacture_details/(?P<pk>\d+)$', item.views.approvedmanufacture_details, name="approvedmanufacture_details"),
)

这是来自终端的错误

  File "C:\Users\I812624\dev\mrp\src\item\urls.py", line 58, in <module>
    url(r'^approvedmanufacture/new/(?P<pk>\d+)/(?P<uri>\S+)/$', item.views.appro
vedmanufacture_new, name="approvedmanufacture_new"),
AttributeError: 'module' object has no attribute 'approvedmanufacture_new'
[03/May/2016 17:51:10]"GET /item/material/material_bomversion_details/3 HTTP/1.1
" 500 59

即使我在 ulr.py 中修改我的行以包含完整路径,我仍然会遇到同样的错误

url(r'^approvedmanufacture/new/(?P<pk>\d+)/(?P<uri>\S+)/$', item.views.viewsapprovedmanufacture.approvedmanufacture_new, name="approvedmanufacture_new"),

url(r'^approvedmanufacture/new/(?P<pk>\d+)/(?P<uri>\S+)/$', item.viewsapprovedmanufacture.approvedmanufacture_new, name="approvedmanufacture_new"),

在同一个文件中有趣的事情我有 2 个视图:

-def material_bomversion_details 在我分手之前我有这个

还有一个新的 -def material_am_details

所以当我在 shell 中执行时 from item.views import material_bomversion_details 它运行正常, 但是当我从 item.views import material_am_details 执行时。

我收到 ImportError: cannot import name material_am_details

这超出了我的理解 看起来 Django 框架中有某种缓存可以保存拆分之前的所有内容,并且没有添加任何新内容。将所有内容移回一个视图文件后,一切正常。

【问题讨论】:

  • 您是否创建了views 文件夹?你的问题是view
  • 我创建了views文件夹。
  • 在shell中,可以from item.views import *还是报错?
  • 不,我没有收到错误消息。
  • 它实际上是命名为__init__.py(2x 双下划线),还是像您的问题中那样命名为_init_.py

标签: python django


【解决方案1】:

在您的views/__init__.py 中,您可以通过相对导入视图来解决此问题:

from .viewscategory import * 
from .viewssubcategory import *
from .viewsitemgroup import *
from .viewsmaterial import *
from .viewsbomversion import *
from .viewsbom import *
from .viewsapprovedmanufacture import *

然后在你的网址中:

from django.conf.urls import url
from item import views

urlpatterns = [
    url(r'^approvedmanufacture/new/(?P<pk>\d+)/(?P<uri>\S+)/$', item.views.approvedmanufacture_new, name="approvedmanufacture_new"),
    url(r'^approvedmanufacture/edit/(?P<pk>\d+)/(?P<uri>\S+)/$', item.views.approvedmanufacture_edit, name="approvedmanufacture_edit"),
    url(r'^approvedmanufacture/delete/(?P<pk>\d+)/(?P<uri>\S+)/$', item.views.approvedmanufacture_delete, name="approvedmanufacture_delete"),
    url(r'^approvedmanufacture/approvedmanufacture_details/(?P<pk>\d+)$', item.views.approvedmanufacture_details, name="approvedmanufacture_details"),
]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 2020-03-17
    • 2023-02-14
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多