怎么返回渲染了的静态html文件?


  • home.html
<!DOCTYPE html>
<html>
<head>
    <title>Django webserver</title>
</head>
<body>
<a href="/add/4/5/">计算 4+5</a>
</body>
</html>
  • 用render渲染模板:

因为需要调用模板,需要将APP置于Install_APP的列表中:
这样,使用render的时候,Django 会自动找到 INSTALLED_APPS 中列出的各个 app 下的 templates 中的文件。

from django.http import HttpResponse
from django.shortcuts import render
def index(request):
    #return render(request, 'home.html')   
    return render(request, 'calc/home.html')

为了避免重名导致的模板导入失败,我们多加了一级文件夹 calc 。

image.png

在修改了urls.py中的映射后为了不必修改所有页面上的超链接该怎么办 ?

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #url(r'^add/(\d+)/(\d+)/$',calc_views.add2,name='add2'),
    url(r'^new_add/(\d+)/(\d+)/$',calc_views.add2,name='add2'),
]

把add改为new_add后:

<!DOCTYPE html>
<html>
<head>
    <title>Django webserver</title>
</head>
<body>
<a href="{% url 'add2' 4 5 %}">计算 4+5</a>
</body>
</html>

需要将 <a href="/add/4/5/">计算 4+5</a>
改为活链接: <a href="{% url 'add2' 4 5 %}">计算 4+5</a> (内部的 / 用空格替代了 , 如果想输字符的话要用'aaaa'而不是aaaa)
Django 会在渲染的时候把它对应于name为'add2'的url:
url(r'^new_add/(\d+)/(\d+)/$',calc_views.add2,name='add2'),
点击后自动切换到 new_add

image.png


Url 迁移了后的客户端怎么办 ?

  • urls.py

#添加新的映射:
url(r'^add/(\d+)/(\d+)/$', calc_views.old_add2_redirect),
url(r'^new_add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),
  • views.py

from django.http import HttpResponseRedirect
from django.urls import reverse   
# new in django 1.10.x
def old_add2_redirect(request, a, b):
    return HttpResponseRedirect(
        reverse('add2', args=(a, b))
        #将a与b映射到add2这个url 。
    )
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。