django你好世界没有表现出来

时间:2012-03-24 08:35:47

标签: python django path

我正在关注tutorial for django,我正在免费托管我的项目进行测试,

托管与python和django shell正常工作,例如,

但我无法在index.html中看到正确的数据或访问/ admin

所以我认为这是一个错误路径的问题?,

所以请就这个菜鸟问题提出建议,

这是我的文件/home/mako34/www/blog

的文件夹

这里是我的代码:

我认为db正确配置了设置,因为它正在创建sqlite db和必要的文件夹

settings.py

import os
*
* configure connection do db, etc
*

ROOT_URLCONF = 'blog.urls'

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(os.path.dirname(__file__),'templates'), # creates a absolute path
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

urls.py

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

# Uncomment the next two lines to enable the admin:
 from django.contrib import admin
 admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'blog.views.home', name='home'),
    # url(r'^blog/', include('blog.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    (r'^, 'blog.views.index'), #<------------------- index/root entry
    # Uncomment the next line to enable the admin:
     url(r'^admin/', include(admin.site.urls)),


)

的index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>My Blog</title>
    </head>

<body>
    <H1>Test Django</H1>
    <div id="content">
    {% block content %}
    {% endblock %}
    </div>
</body>

</html> 

那么我错过了什么?

所以我可以看到我的索引html包含数据[现在显示标签{% block content %} {% endblock %}并且没有数据

且无法访问http://mako34.alwaysdata.net/blog/admin/

谢谢!

1 个答案:

答案 0 :(得分:1)

您的网址应如下所示:

urlpatterns = patterns('',
     url(r'^admin/', include(admin.site.urls)),
     url(r'^', 'blog.views.index'),
)

请注意,您要使用的索引网址现在包含在url()调用中。此外,索引URL现在遵循管理URL,以便引用/admin的网址由管理网址处理,而不是捕获您定义的所有index网址。

网址处理程序适用于第一场比赛。您的url(r'^')符合所有条件,因此管理网址无法正常运行。您应该将其更改为url(r'^$'),它将匹配“无路径”网址,而不是“每个网址”。请注意添加$符号,标记模式的结尾。

编辑:

好的,现在我更了解你的问题了。您要做的是在特定的服务器路径上部署django应用程序,该路径需要URL路径中的前缀。

这通常是标准网址:

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

相反,这就是你要做的事情:

http://www.example.com/myapp/
http://www.example.com/myapp/admin/
http://www.example.com/myapp/index/

Django通常希望您的应用程序部署在根URL,没有路径。该路径用于查找哪个内部django应用程序应该处理请求。

有两种方法可以解决您的问题。第一个,也就是我认为正确的方法,是使用here所述的网站框架。

另一种方法是在urlpatterns中为所有URL添加前缀,如下所示:

urlpatterns = patterns('',
     url(r'^blog/admin/', include(admin.site.urls)),
     url(r'^blog/$', 'blog.views.index'),
)

但是您还需要记住将“博客”前缀添加到多个设置中,这些设置需要LOGIN_REDIRECT等URL。

你真正应该做的是让django在URL工作:mako34.alwaysdata.net并忘记/ blog / algether,但是修改apache以将所有请求重定向到mod_wsgi。