我正在使用Lighttpd和Django。我已将Lighttpd服务器配置为将所有以“.psp”扩展名结尾的请求传递给Django。
我的启动页面是通过Django提供的页面,可以访问“http://192.168.1.198/home.psp”。我想让用户浏览此页面而不在网址中明确写入“home.psp”,即使用“http://192.168.1.198”
这可能吗?
感谢您提前提供任何帮助。
答案 0 :(得分:1)
我认为你在这里使用单个文件代表网页的“旧”方法令人困惑,这些网页本身包含在响应django / frameworks工作的方式发送之前传递给解释器的代码。
如果你熟悉apache,想象一下django部分承担mod_rewrite的角色。 Django和其他框架拥有所谓的调度程序或路由机制。
基本上,他们订阅了MVC模式,表明你应该将模型,控制器和视图分开(用django用语,模型,模板和视图)。
现在发生的事情是你在django中有一个名为urls.py
的文件,它包含一个路由列表(url)和方法名称(通常包含在views.py
中)来处理它们。这是一个例子:
urlpatterns = patterns('',
url(r'^dologin$', 'testapp.views.auth_login', name="auth-login-uri"),
url(r'^doopenidlogin$', 'testapp.views.auth_openid_login', name="auth-openid-login-uri"),
url(r'^dologout$', 'testapp.views.auth_logout', name="auth-logout-uri"),
url(r'^login$', 'testapp.views.loginform', name="login-form"),
url(r'^openidlogin$', 'testapp.views.openidloginform', name="openid-login-form"),
url(r'^$', 'testapp.views.index', name="index"),
)
这里testapp
是一个python包,views.py
是一个python文件,index
是一个django视图。 url是由正则表达式构造的,因此我可以将任何我想要的内容作为url,以及如何形成stackoverflow url。
基本上,你再也不需要文件扩展名了。我强烈建议你买一本关于django的好书 - 周围有一些。
答案 1 :(得分:0)
您可能正在寻找的是Lighty配置文件中的index-file.names指令。只需将“home.psp”添加到配置文件的列表中,Lighty将在未指定文件名时查找。
答案 2 :(得分:0)
我必须在lighttpd配置文件的url.rewrite-once
块内添加一条语句,如:
url.rewrite-once = (
"^(/media.*)$" => "$1",
"^(/static.*)$" => "$1",
"^/favicon\.ico$" => "/media/favicon.ico",
"^(/)$" => "/my_project_dir/home.psp",
"^(/.*)$" => "/my_project_dir$1",
)
除此之外,我在urls.py中添加了以下行:
(r'^$',my_index_view_name),
希望这可以帮助将来的某个人。感谢大家的回复。干杯!