springboot 简单变化直接定向到static静态页面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 简单变化直接定向到static静态页面相关的知识,希望对你有一定的参考价值。
参考技术A 在用springboot的时候,默认controller层访问到template下的动态页面,但有时候又想直接访问static下的静态页面默认是这样请求的
上面请求的是动态页面,那如果需要请求到static页面,用下面重定向方式就可以:
此时请求的路径为:static/sb-admin-2/index.html页面,这样可以实现动态和静态页面的轻松选择
直接从 django 中的 urls.py 重定向到命名的 url 模式?
【中文标题】直接从 django 中的 urls.py 重定向到命名的 url 模式?【英文标题】:Redirect to named url pattern directly from urls.py in django? 【发布时间】:2013-03-20 08:18:22 【问题描述】:在 Django 中,如何直接从 urls.py 进行简单的重定向?自然我是一个组织良好的人,喜欢 DRY 原则,所以我想根据它的命名 url 模式来获取目标,而不是硬编码 url。
【问题讨论】:
【参考方案1】:如果你使用的是 Django 1.4 或 1.5,你可以这样做:
from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
...
如果你使用的是 Django 1.6 或更高版本,你可以这样做:
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
...
在 Django 1.9 中,permanent
的默认值已从 True 更改为 False。因此,如果您不指定 permanent
关键字参数,您可能会看到以下警告:
RemovedInDjango19警告:在 Django 1.9 中,“RedirectView.permanent”的默认值将从 True 更改为 False。设置一个显式值以消除此警告。
【讨论】:
请注意,请记住 RedirectView 默认设置为 Permanent=True。 您可以重定向所有内容!像这样:(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
RedirectView 在 Django 1.9 中默认设置为 Permanent=False。
有人能解释一下上面例子中的“my_named_pattern”是什么吗?
将pattern_name
参数传递给RedirectView
在调用时使用给定的模式名称为您执行反向操作。其他useful parameters include permanent
and query_string
.【参考方案2】:
这对我有用。
from django.views.generic import RedirectView
urlpatterns = patterns('',
url(r'^some-page/$', RedirectView.as_view(url='/')),
...
在上面的例子中'/'
表示它将重定向到索引页面,
您还可以在其中添加任何 url 模式。
【讨论】:
请注意,请记住RedirectView
在旧版本的 Django 中默认为 permanent=True
,在 Django >= 1.9 版本中默认为 permanent=False
。【参考方案3】:
django v2+
from django.contrib import admin
from django.shortcuts import redirect
from django.urls import path, include
urlpatterns = [
# this example uses named URL 'hola-home' from app named hola
# for more redirect's usage options: https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/
path('', lambda request: redirect('hola/', permanent=False)),
path('hola/', include("hola.urls")),
path('admin/', admin.site.urls),
]
【讨论】:
@Ali 永久重定向通常有 HTTP 代码 301,临时重定向通常有代码 302。永久重定向用于通知浏览器网站的结构变化。临时重定向用于指示在动态服务器端操作(如登录)之后显示的新页面。根据文档permanent=False
是默认值。更多详情请阅读:docs.djangoproject.com/en/2.1/topics/http/shortcuts/#redirectdeveloper.mozilla.org/en-US/docs/Web/HTTP/…【参考方案4】:
如果你不支持 RedirectView,旧版本的 django 支持这种方式
在view.py中
def url_redirect(request):
return HttpResponseRedirect("/new_url/")
在 url.py 中
url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),
您可以使用HttpResponsePermanentRedirect
使其永久化
【讨论】:
【参考方案5】:我试图将所有 404 重定向到主页,但效果很好:
from django.views.generic import RedirectView
...
under urlpatterns, added:
url(r'^.*/$', RedirectView.as_view(url='/home/')),
url(r'^$', RedirectView.as_view(url='/home/')),
【讨论】:
【参考方案6】:您可以直接在 urls.py 上执行以下操作:
url(r'^story/(?P<pk>\d+)/',
lambda request, pk: HttpResponsePermanentRedirect('/new_story/pk'.format(pk=pk)))
只需确保您准备好接收重定向的新 URL! 另外,请注意重定向的类型,在我使用 Permanent Redirect
的示例中【讨论】:
以上是关于springboot 简单变化直接定向到static静态页面的主要内容,如果未能解决你的问题,请参考以下文章
Springboot以Tomcat为容器实现http重定向到https的两种方式