简体   繁体   English

从views.py导入无法从应用程序工作

[英]import from views.py does not work from app

I'm working with django and I'm trying to get a simple app functional. 我正在使用django,并且正在尝试使一个简单的应用程序正常运行。

The app is supposed to deliver a simple 'Hello world'-view but my_app/urls.py fails to import methods from my_app/views.py . 该应用程序应该提供简单的“ Hello world”视图,但是my_app/urls.py无法从my_app/views.py导入方法。

My app is named SocialUrl 我的应用程序名为SocialUrl

Here is my-project/urls.py . 这是my-project/urls.py

from django.conf.urls import patterns, include, url
# from SocialUrl.views import test

from django.contrib import admin
admin.autodiscover()

    urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^/su/', include('SocialUrl.urls')),
    # url(r'^$', test),
)

Here is my-app/urls.py 这是my-app/urls.py

from django.conf.urls import patterns, url
from . import views

urlpatterns = patterns('',
    # ex: /polls/
    url(r'^test$', views.test()),
)

Here is my-app/views.py 这是my-app/views.py

from django.shortcuts import render
from django.template import RequestContext

def test(request):
    return render(request, 'test.html', RequestContext(request, {}))

Note:- that the testlines in my-project/urls.py works correctly. 注意: -my my-project/urls.py正常工作。

My folder structure looks like this: 我的文件夹结构如下所示:

my-project
|- my-project
|- my-app

I've added this in my-project/settings.py 我已经在my-project/settings.py添加了它

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates').replace('\\', '/'),
    os.path.join(BASE_DIR, 'SocialUrl', 'templates').replace('\\', '/'),
)

I get the following error: 我收到以下错误:

    Environment:


    Request Method: GET
    Request URL: http://127.0.0.1:8000/

    Django Version: 1.6.2
    Python Version: 2.7.6
    Installed Applications:
    ('django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'SocialUrl')
    Installed Middleware:
    ('django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware')


    Traceback:
    File "C:\Users\Sverker\.virtualenvs\coomba\lib\site-packages\django\core\handlers\base.py" in get_response
      101.                 resolver_match = resolver.resolve(request.path_info)
    File "C:\Users\Sverker\.virtualenvs\coomba\lib\site-packages\django\core\urlresolvers.py" in resolve
      318.             for pattern in self.url_patterns:
    File "C:\Users\Sverker\.virtualenvs\coomba\lib\site-packages\django\core\urlresolvers.py" in url_patterns
      346.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
    File "C:\Users\Sverker\.virtualenvs\coomba\lib\site-packages\django\core\urlresolvers.py" in urlconf_module
      341.             self._urlconf_module = import_module(self.urlconf_name)
    File "C:\Users\Sverker\.virtualenvs\coomba\lib\site-packages\django\utils\importlib.py" in import_module
      40.         __import__(name)
    File "C:\Users\Sverker\Dropbox\Coomba\SbrgCoomba\SbrgCoomba\urls.py" in <module>
      13.     url(r'^/su/', include('SocialUrl.urls')),
    File "C:\Users\Sverker\.virtualenvs\coomba\lib\site-packages\django\conf\urls\__init__.py" in include
      26.         urlconf_module = import_module(urlconf_module)
    File "C:\Users\Sverker\.virtualenvs\coomba\lib\site-packages\django\utils\importlib.py" in import_module
      40.         __import__(name)
    File "C:\Users\Sverker\Dropbox\Coomba\SbrgCoomba\SocialUrl\urls.py" in <module>
      7.     url(r'^$', test),

    Exception Type: NameError at /
    Exception Value: name 'test' is not defined

I have tried various combinations of the from . import views 我尝试了from . import views各种组合from . import views from . import views line in my-app/urls.py eg. my-app/urls.py from . import views行,例如。 from views import test

Edit: 编辑:

still disfunctional my-app/urls.py 仍然无法使用my-app/urls.py

from django.conf.urls import patterns, url
from views import test

urlpatterns = patterns('',
    # ex: /polls/
    url(r'^$', test),
)

The problem is that you really have this line in your app urls.py : 问题是您的应用程序urls.py确实包含以下行:

url(r'^$', test)

The error says that test is not defined. 该错误表明未定义test Just define (import) it: 只需定义(导入)它:

from views import test

I think this may cause the error: 我认为这可能会导致错误:

url(r'^/su/', include('SocialUrl.urls')),

remove the leading slash and you will only have: 删除斜杠,您将只有:

url(r'^su/', include('SocialUrl.urls')),

Let me know if this worked for you 让我知道这是否对您有用

I'm not sure if this is the issue - but generally I follow this pattern for my app level url files. 我不确定这是否是问题-但通常我会在我的应用级网址文件中遵循这种模式。

Main project urls.py file 主项目urls.py文件

from django.conf.urls import patterns, include, url

urlpatterns = patterns('apps.main.views',
    url(r'', include('apps.main.urls')),
)

App level urls.py file 应用程序级别urls.py文件

from django.conf.urls import patterns, url

urlpatterns = patterns('',
    # ex: /polls/
    url(r'^test$', 'views.tests'),
)

Note that you should use urlpatterns += or urlpatterns = depending on whether it is defined earlier. 请注意,应根据之前是否定义urlpatterns +=urlpatterns =来使用它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM