Django URL和View的关系说明

URL和View的关系

1、每次用户发来一个HttpRequest请求,Django会用URL_pattern与请求进行匹配,匹配到第一个URL_pattern就会把请求转向对应的view

2、view用来响应request,并返回response,response里可以包含网页文件呀,图片等等。所以项目中绝大部分代码均在此编写。

view 可以引入通用模板来减少代码量,具体查看文档

Use generic views

3、view引入HTML文件的方法:

在一个app下建立一个templates文件夹,将html文件放进去该文件夹

这里其实不一定要把HTML文件放在这个templates里,可以随意定义

不过,需要在setting.py里,找到templates,

修改DIRS:[ os.path.join (BASE_DIR,'你定义的html存放的文件夹')]

在app下 view.py 文件,在里面写好view函数

def 函数名(request):

return render(request,'index.html')

render(渲染)需要三个变量, 第一个变量是request请求,第二个是模版所在目录,第三个是一个字典(可选),字典用于对应模板里设计的变量,可以用locals()将函数里设计的变量自动转换为字典

4、在对于app下创建一个urls.py ,写入如下内容

from django.urls import path​
from . import views​
urlpatterns = [ ​
 path('', views.index, name='index'),​
]

5、在项目文件夹里找到 urls.py 加入如下内容

from django.urls import include, path
​
urlpatterns = [
 path('polls/', include('polls.urls')),
 path('admin/', admin.site.urls),
]

对于<a>标签里的 href 可以用 {% url 'url名' %}来代替,url名指的是 urls.py 里的path('login.html/', views.my_login, name='url名'),

Django 中通常使用 get_object_or_404()来捕捉 404 错误,而不用自己写 try...except

def detail(request, question_id):
 question = get_object_or_404(Question, pk=question_id)
 return render(request, 'polls/detail.html', {'question': question})

补充:django中url与view配置方法

django中url与view配置方法(一)

url.py

from django.conf.urls import url
from . import views
urlpatterns = [
 url(r'^$', views.showAssets, name='show_assets'),
]

views.py

# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response
# Create your views here.
def showAssets(request):
 return render_to_response('assets_index.html', {})

django中url与view配置方法(二)

url.py

# -*- coding: utf-8 -*-
from django.conf.urls import url
from app001.views import IndexView
urlpatterns = [
 url(r'^admin/', admin.site.urls),
 url(r'^$', IndexView.as_view(), name="index"), ]

views.py

# -*- coding: utf-8 -*-
from django.views.generic.base import View
from django.shortcuts import render
# Create your views here.
class IndexView(View):
 def get(self, request):
  return render(request, 'index.html', {})

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • django url到views参数传递的实例

    一.采用?a=1&b=2访问 修改views.py: views.py from django.shortcuts import render from django.http import HttpResponse def add(request): a = request.GET['a'] b = request.GET['b'] c = int(a)+int(b) return HttpResponse(str(c)) 注:request.GET 类似于一个字典,更好的办法是用 reque

  • django ListView的使用 ListView中获取url中的参数值方式

    view.py from django.views.generic import ListView,DetailView from xxxx.models import Model_Name class Colortag_view(ListView): #context_object_name = '如果不指定的话在html页面中 可以使用object_list获取' context_object_name = 'object_list' #template_name='html页面所在目录'

  • django多个APP的urls设置方法(views重复问题解决)

    Django在做url设置时,如果有两个APP,那么再import时会出错 解决的方法有两种: 方法一:在每个APP里设置单独的url.py文件,最后在总的url再进行设置: 1.分别在blogAdmin和blogUser两个APP下,分别建立url.py文件 2.urls.py设置 blogAdmin里的views.indexAdmin方法 2.设置完APP里的urls后,再设置总的urls 3.设置成功后,输入两级地址: 方法二:不用每个新建urls,直接在项目的urls里设置 两种方法,方

  • Django项目主urls导入应用中views的红线问题解决

    使用PyCharm学习Django框架,从项目的主urls中导入app中的views的时候,导入的包中下面有红线报错,但是却能正常使用.要是这样也就没什么事了,但是导入之后的提示功能就丧失了,非常的不爽:网上百度了一下,竟然好多人遇到了这个问题,重要是解答的说的更是不明不白:这里记录一下详细的解决办法: 如下图,我这里就是在项目的主urls中导入一个叫blog的应用报红线,虽然运行不会报错,但是却没有了提示 解决办法: 1. 如下图,我的Django项目名称叫做 imooc_myblog_1 2

  • Django URL和View的关系说明

    URL和View的关系 1.每次用户发来一个HttpRequest请求,Django会用URL_pattern与请求进行匹配,匹配到第一个URL_pattern就会把请求转向对应的view 2.view用来响应request,并返回response,response里可以包含网页文件呀,图片等等.所以项目中绝大部分代码均在此编写. view 可以引入通用模板来减少代码量,具体查看文档 Use generic views 3.view引入HTML文件的方法: 在一个app下建立一个template

  • 对Django url的几种使用方式详解

    利用Django开发网站,可以设计出非常优美的url规则,如果url的匹配规则(包含正则表达式)组织得比较好,view的结构就会比较清晰,比较容易维护. 最简单的形式 <code> from django.conf.urls import patterns, url urlpatterns = patterns('', url(r'^articles/2003/$', 'news.views.special_case_2003'), url(r'^articles/(\d{4})/$', 'n

  • Django url,从一个页面调到另个页面的方法

    创建项目和应用 django-admin startproject zqxt_views(项目名) cd zqxt_views python manage.py startapp calc(应用名) ----–1.采用/add?a=4&b=5这样GET方法进行--------- 修改 calc/view.py文件 from django.shortcuts import render from django.http import HttpResponse def add(request): a

  • Django 视图层(view)的使用

    视图层(view) 视图函数,简称视图,本质上是一个简单的Python函数,它接受Web请求并且返回Web响应.响应的内容可以是HTML网页,重定向,404错误,图片等任何东西,但本质是返回 响应对象HttpResponse . 视图函数的代码写哪里都可以,但一般约定俗成设置在项目或应用程序目录中的 views.py 文件中 视图案例: from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirec

  • Django url 路由匹配过程详解

    1 Django 如何处理一个请求 当一个用户请求Django 站点的一个页面,下面是Django 系统决定执行哪个Python 代码使用的算法: Django 确定使用根 URLconf 模块.通常,这是 ROOT_URLCONF 设置的值(即 settings 中的 ROOT_URLCONF),但如果传入 HttpRequest 对象拥有 urlconf 属性(通过中间件设置),它的值将被用来代替 ROOT_URLCONF 设置.可以在 django/core/handlers/base.p

  • 基于Django URL传参 FORM表单传数据 get post的用法实例

    POST和GET是web开发中常用的表单交互方法,是构建web前后端交互系统的顶梁柱,现将Django中的简单用法示例记录下来,以供后续查询和其他同学参考 1.URL传参 #前端html的链接中用模版标签把参数"x"传递给achievement这个应用的yearcontent方法 <td><a href={% url 'achievement:yearcontent' x %} >{{ x }}</a></td> #urls.py中用正则

  • 浅谈django url请求与数据库连接池的共享问题

    但凡介绍数据库连接池的文章,都会说"数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问题提出来的.数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术能明显提高对数据库操作的性能." 这句

  • Django url反向解析的实现

    目录 1.代码中URL可以出现的位置 2.代码中URL书写规范 3.URL反向解析 4 案例 1.代码中URL可以出现的位置 一个是在HTML模板中,一个是在视图函数中: 1.模板[HTML]中 (1) <a href='URL'>超链接</a> 点击后页面跳转至URL (2) <form action='URL' method='post'> form表单中的数据,用post方法提交至URL 2.视图函数中 (1)302跳转 HttpResponseRedirect(

  • Django url.py path name同一app下路由别名定义

    目录 Django url path project : url.py 路由别名 调用方法: HTML(template)调用实例 同一app下 name 定义 Django url path Django 路由在 urls.py 配置 path('浏览器地址栏表示URL', '处理方法', '路由别名') path('app1/screen001/list', screen001_view.list, name='list') 注意:同一app下 name 定义不能重名,若重名,后者会覆盖前者

随机推荐