我已经在该网站上闲逛了一段时间,还没有找到适合我的解决方案。长时间的聆听者,首次调用者。

我有一个现有的Django应用程序(基于Django文档示例站点,包括“民意调查”)。我已经把它移到了上面,并通过wsgi在Web服务器上运行。

我已经创建了一个具有自己内容的新本地项目。我这样做的方式类似于示例站点,其应用程序与项目的主应用程序处于同一级别。

我现在正尝试将我创建的应用程序添加到示例站点。我正在尝试反射(reflect)组织和调查应用程序的连接,因为它连接到“mysite”。

我的文件结构如下:

  • passenger_wsgi.py
  • mysite
  • mysite(主应用)
  • __init__.py
  • settings.py
  • urls.py
  • wsgi.py
  • 民意调查(示例网站应用)
  • __init__.py
  • urls.py
  • views.py
  • models.py
  • 核心(我正在添加的应用)
  • __init__.py
  • urls.py
  • views.py
  • models.py
  • manage.py

  • 设置的附加内容如下所示:
    INSTALLED_APPS = {
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'polls',
        'core'
    }
    

    mysite/urls.py:
    from django.conf.urls import patterns, include, url
    from django.contrib import admin
    urlpatterns = patterns('',
        url(r'^$', 'polls.views.home', name='home2'),
        url(r'^polls/', include('polls.urls', namespace="polls")),
        url(r'^admin/', include(admin.site.urls)),
        url(r'^core/', include('core.urls', namespace="core")),
    )
    

    core/urls.py:
    from django.conf.urls import patterns, include, url
    from django.contrib import admin
    #from core import views
    urlpatterns = patterns('',
        url(r'^', 'core.views.home', name='home'),
    )
    

    当我加载“manage.py shell”时,我可以从核心导入所有URL,模型和 View 。我什至可以使用django.test.Client来“获取”“/core/”,并且得到200响应,其中包含预期的内容。但是,当我尝试在浏览器中导航到该站点(任何URL)时,我得到:“ImportError at No module named urls”

    如果我删除包含core.urls的调用,则其他URL将按预期工作。

    如果两个urls.py文件都进行了不同的调整,我已经尝试了一些方法,包括直接从顶部urls.py调用call core.views,而忽略了core.urls,从而导致“无模块命名的 View ”。

    任何建议将不胜感激。我也欢迎有关如何编写更好的问题的建议。

    Stack Trace

    编辑:还想提到我尝试删除所有已编译的python文件,以消除未更新逻辑的可能性。

    编辑2 :它在virtualenv中运行。我已经在Dreamhost服务器上安装了较新版本的Python。

    passenger_wsgi.py:
    import sys, os
    cwd = os.getcwd()
    sys.path.append(cwd)
    sys.path.append(cwd + '/mysite')
    
    if sys.version < "2.7.9":
           os.execl(cwd + "/env/bin/python", "python2.7", *sys.argv)
    
    sys.path.insert(0, cwd + '/env/bin')
    sys.path.insert(0, cwd + '/env/lib/python2.7')
    sys.path.insert(0, cwd + '/env/lib/python2.7/site-packages/django')
    sys.path.insert(0, cwd + '/env/lib/python2.7/site-packages')
    
    os.environ['DJANGO_SETTINGS_MODULE'] = "mysite.settings"
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()
    

    mysite/mysite/wsgi.py:
    import os
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
    
    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()
    

    编辑3 :这是core/views.py
    from django.shortcuts import render
    from django.core.mail import send_mail
    from django.http import HttpResponseRedirect
    
    # Create your views here.
    def home(request):
        return render(request, 'core/home.html')
    

    编辑4 :来自浏览器的示例GET header 。导致500导入错误;没有名为urls的模块
    GET /core/ HTTP/1.1
    Host: #redacted
    Connection: keep-alive
    Pragma: no-cache
    Cache-Control: no-cache
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36
    Accept-Encoding: gzip, deflate, sdch
    Accept-Language: en-US,en;q=0.8
    Cookie: csrftoken=36HpckIqzOMbw29BOrQWcnaIJbMn6pwo; sessionid=z9c58vb6610kevo4yytolcbhlaqsoqnm
    

    编辑5 :由于回答主要表明事情看起来不错,因此我将问题的范围扩大到包括Dreamhost并提交了支持票。如果有用的话,我会在这里报告。

    最佳答案

    urlpatterns 在 core/urls.py 中看起来不对
    而不是做

    urlpatterns = patterns('',
    url(r'^', views.home, name='home'),)
    

    尝试
       urlpatterns = [url(r'^','core.views.home',name='home'),]
    

    附言引用了 views.name

    关于python - 向托管的Django项目添加应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28466141/

    10-12 17:00
    查看更多