【发布时间】:2011-05-13 11:21:25
【问题描述】:
我目前正在尝试为新的 django 1.3 基于类的视图迁移基于函数的视图。首先,我更改了一个简单的 RedirectView,但我无法让它工作,更糟糕的是,我无法理解类视图是如何工作的。机制很简单,我在索引页面有一个选择字段,用户选择一个选项并点击“go”。视图必须获取与该名称对应的 url 并重定向到那里。
发送 POST 信号时,django 没有返回任何内容,只是终端中的 405 错误。
更新代码:
index.html
[...]
<div id="widget">
<h2>{% trans "Spaces list" %}</h2><br />
<form method="post" action="/spaces/go/">{% csrf_token %}
<select name="spaces">
{% for space in spaces %}
<option>{{ space.name }}</option>
{% empty %}
<option>{% trans "No spaces" %}</option>
{% endfor %}
</select>
<input type="submit" value="{% trans 'Go' %}" />
</form>
</div>
[...]
views.py
class GoToSpace(RedirectView):
url = "/spaces/"
def get_redirect_url(self, **kwargs):
self.place = get_object_or_404(Space, name = self.request.POST['spaces'])
return self.place.url
urls.py
from django.conf.urls.defaults import *
from e_cidadania.apps.spaces.views import GoToSpace
urlpatterns = patterns('',
(r'^go/', GoToSpace.as_view()),
)
我做错了什么?
【问题讨论】:
-
你的 urls.py 呢?
标签: django django-views django-class-based-views