現在、関数ベースのビューを新しい 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>
[...]
ビュー.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()),
)
私が間違っていることは何ですか?