Django中的"没有名为simple的模块"错误

Bur*_*rak 64 django

ImportError at /
No module named simple

Django Version: 1.5.dev20120710212642
Run Code Online (Sandbox Code Playgroud)

我安装了最新的django版本.我在用

from django.views.generic.simple import redirect_to
Run Code Online (Sandbox Code Playgroud)

在我的urls.py. 怎么了?它被弃用了吗?

Ahs*_*san 133

使用基于类的视图而不是redirect_to这些基于函数的通用视图已被弃用.

以下是基于类的视图用法的简单示例

from django.conf.urls import patterns, url, include
from django.views.generic import TemplateView

urlpatterns = patterns('',
    (r'^about/', TemplateView.as_view(template_name="about.html")),
)
Run Code Online (Sandbox Code Playgroud)

更新

如果有人想要重定向到URL,请使用RedirectView.

from django.views.generic import RedirectView

urlpatterns = patterns('',
    (r'^one/$', RedirectView.as_view(url='/another/')),
)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的这个例子.我们刚刚升级到1.5,并立即出现redirect_to和direct_to_template错误.Upvoted. (6认同)

Adr*_*ter 53

这应该工作

from django.conf.urls import patterns
from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'some-url', RedirectView.as_view(url='/another-url/'))
)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!奇迹般有效!实际上,这是问题的正确答案.接受的答案不是redirect_to的替代品. (2认同)

Dan*_*man 6

是的,旧的基于函数的通用视图在1.4中已弃用.请改用基于类的视图.

  • 我可以使用什么而不是redirect_to? (2认同)

Wto*_*wer 5

并且对于记录(当前在文档中没有相关示例),要将RedirectView与参数一起使用:

from django.conf.urls import patterns, url
from django.views.generic import RedirectView


urlpatterns = patterns('',
    url(r'^myurl/(?P<my_id>\d+)$', RedirectView.as_view(url='/another_url/%(my_id)s/')),
)
Run Code Online (Sandbox Code Playgroud)

请注意,虽然正则表达式查找数字(\d+),但参数将作为字符串(%(my_id)s)传递.

什么还不清楚是如何使用RedirectViewtemplate_nameurls.py.