我正在关注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/
谢谢!
答案 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。