我是django的新手,所以如果这很明显,请原谅我。

我已经完成了这些教程,所以我有一个项目(我称其为“ trydj”),该项目的应用程序为“ polls”。我想做的是在根目录下进行民意调查,即:

http://www.example.com/将调用民意测验索引视图,然后
http://www.example.com/details/将调用民意调查详细信息视图。

我不想要(但目前拥有)的是:

http://www.example.com/polls
http://www.example.com/polls/details/

我还希望保持在其他子网址(例如admin或我可能创建的其他应用程序)上提供其他应用程序的功能,即:

http://www.example.com/admin/
http://www.example.com/anotherapp/

我拥有一切,就像在教程结束时一样,在项目级别具有settings.py,manage.py等,在trydj和polls中都具有urls.py。

trydj中的urls.py具有以下urlpatterns:

urlpatterns = patterns('',
   # Uncomment the admin/doc line below to enable admin documentation:
   url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

   # Uncomment the next line to enable the admin:
   url(r'^admin/', include(admin.site.urls)),

   url(r'^polls/', include('polls.urls')),
)


并且民意调查中的urls.py具有以下urlpatterns:

urlpatterns = patterns('',
   url(r'^$',
      ListView.as_view(
         queryset=Poll.objects.order_by('-pub_date')[:5],
         template_name='polls/index.html'
      )
   ),
   url(r'^(?P<pk>\d+)/$',
      DetailView.as_view(
         model=Poll,
         template_name='polls/detail.html'
      )
   ),
   url(r'^(?P<pk>\d+)/results/$',
      DetailView.as_view(
         model=Poll,
         template_name='polls/results.html'
      ),
      name='poll_results'
   ),
   url(r'^(?P<pk>\d+)/vote/$',    'polls.views.vote'),
)


我基于django文档创建的apache配置为:

WSGIScriptAlias / /var/django/trydj/wsgi.py
WSGIPythonPath /var/django

<Directory /var/django/trydj>
    <Files wsgi.py>
        Order allow,deny
        Allow from all
    </Files>
</Directory>


再次基于Django文档的wsgi.py是:

import os
import sys

sys.path.append('/var/django/trydj')

os.environ['PYTHON_EGG_CACHE'] = '/var/django/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()


我尝试以各种方式更改trydj.urls中的相关url正则表达式。值r'^'确实可以解决问题,但是即使我将它们从polls目录移出并移至templates文件夹的根目录,应用程序也找不到其模板文件。

与往常一样,非常感谢您的帮助。

最佳答案

只需更改此行:

url(r'^polls/', include('polls.urls')),


对此

url(r'^', include('polls.urls')),


这样,到达此点的所有URL都会在民意调查中传递到您的urls.py文件,而不只是前缀为polls/的URL。

哦,我要补充一点,在文件中的最后一行保留此行很重要,这样其他应用程序就有机会在民意测验应用将其全部捕获之前识别出自己的URL。如果交换

关于python - 如何使用apache设置django,以便我的应用程序位于根URL?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8536635/

10-11 03:49
查看更多