当前位置: 首页 > news >正文

企业网站建设因素分析网站logo设计制作

企业网站建设因素分析,网站logo设计制作,自己设计一款新产品,南昌p2p网站建设本文基于之前内容列表如下#xff1a; 【图文指引】5分钟搭建Django轻量级框架服务 【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应 【实战案例】Django框架连接并操作数据库MySQL相关API 视图概述 Django中的视图的概念是一类具有相同功能和模板的网…本文基于之前内容列表如下 【图文指引】5分钟搭建Django轻量级框架服务 【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应 【实战案例】Django框架连接并操作数据库MySQL相关API 视图概述 Django中的视图的概念是一类具有相同功能和模板的网页的集合在Django中网页和其他内容都是从视图派生而来每一个视图表现为一个Python函数或者说方法如果是在基于类的视图里的话Django将会根据用户请求的URL来选择使用哪个视图更准确的说是根据URL中域名之后的部分为了将URL和视图关联起来Django使用了’URLconfs’来配置URLconf将URL模式映射到视图。 基于之前的投票应用在polls/views.py 里添加更多视图与之前不同的是他们接收参数 def detail(request, question_id):return HttpResponse(Youre looking at question %s. % question_id)def results(request, question_id):response Youre looking at the results of question %s.return HttpResponse(response % question_id)def vote(request, question_id):return HttpResponse(Youre voting on question %s. % question_id)同时将新试图添加进polls.urls模块里只要添加几个url()函数调用就行 from django.urls import pathfrom . import viewsurlpatterns [# ex: /polls/path(, views.index, nameindex),# ex: /polls/5/path(int:question_id/, views.detail, namedetail),# ex: /polls/5/results/path(int:question_id/results/, views.results, nameresults),# ex: /polls/5/vote/path(int:question_id/vote/, views.vote, namevote), ]这时候运行项目后在地址栏中访问http://localhost:8000/polls/27/即可发现如下页面 也可以尝试 “/polls/27/results/” 和 “/polls/27/vote/”这些将显示占位的结果和投票页面。 当请求网站的页面如/polls/27/Django会加载myself.urls模块因为它被ROOT_URLCONF设置指向。它会找到名为urlpatterns的变量并按顺序遍历这些模式,在找到匹配项’polls/之后会剥离匹配的文本“polls/”然后将剩余的文本27/发送给’polls.urls’URL 配置以进行进一步处理匹配 ‘int:question_id/’从而调用 detail() 视图 detail(requestHttpRequest object, question_id27)问题question_id27来自int:question_id。使用尖括号获得网址部分后发送给视图函数作为一个关键字参数。字符串的question_id部分定义了要使用的名字用来识别相匹配的模式而int部分是一种转换形式用来确定应该匹配网址路径的什么模式。冒号: 用来分隔转换形式和模式名。 上述过程仅仅是写一个demo用于测试页面返回实际中一个视图要做的事是返回一个包含被请求页面内容的HttpResponse对象或者抛出一个异常如Http404至于其他事情也可以做但理论上不属于页面的职责。 视图模板系统 为了不将页面的设计写死在视图函数的代码中接下来使用Django的模板系统只要创建一个视图就可以将页面的设计从代码中分离出来。 在polls应用路径下创建polls/templates/polls/index.html 创建模板文件的通用规则如下 目录结构在每个应用如polls中应该有一个templates目录接着在这个目录下创建一个与应用名称相同的子目录如polls这样可以避免模板名称冲突。 文件命名文件命名模板文件通常以.html为后缀文件名应描述其功能如index.html、detail.html等。 TEMPLATES配置在项目的settings.py文件中TEMPLATES设置应确保APP_DIRS为True以允许Django在每个已安装应用的templates目录中查找模板。 !DOCTYPE html html langen headmeta charsetUTF-8title这是Polls的index模板渲染/title /head body{% if latest_question_list %}ul{% for question in latest_question_list %}lia href/polls/{{ question.id }}/{{ question.question_text }}/a/li{% endfor %}/ul{% else %}pNo polls are available./p{% endif %} /body /html更新polls/views.py里的index视图来使用模板 from django.http import HttpResponse from django.template import loaderfrom .models import Questiondef index(request):latest_question_list Question.objects.order_by(-pub_date)[:5]template loader.get_template(polls/index.html)context {latest_question_list: latest_question_list,}return HttpResponse(template.render(context, request))上述过程载入polls/index.html模板文件并且向它传递一个上下文(context)。这个上下文是一个字典它将模板内的变量映射为Python对象。访问 /polls/会看见一个无序列表与数据库中的数据对应列出了之前添加的投票问题链接指向这个投票的详情页。 render()函数 “载入模板填充上下文再返回由它生成的HttpResponse对象”是一个非常常用的操作流程于是Django提供了一个快捷函数render()用它来重写index()视图 from django.shortcuts import renderfrom .models import Questiondef index(request):latest_question_list Question.objects.order_by(-pub_date)[:5]context {latest_question_list: latest_question_list}return render(request, polls/index.html, context)上述过程无需再导入loader和HttpResponse当然其他函数还在使用的话就需要保持导入。 render()函数的作用和参数如下 作用返回一个HttpResponse对象这个对象包含了渲染后的模板内容用户可以在浏览器中看到这个结果。 参数 第一个参数request传入的HTTP请求对象包含用户请求的信息。第二个参数template_name要渲染的模板的名称以字符串形式表示通常包括应用名称和模板路径。第三个参数context 可选一个字典包含要传递给模板的上下文数据以便在模板中动态显示内容。 对于第三个参数示例如下 from django.shortcuts import renderdef my_view(request):context {greeting: Hello, World!,items: [Item 1, Item 2, Item 3],}return render(request, polls/polls/index.html, context)在模板index.html中可以通过以下方式访问这些数据 h1{{ greeting }}/h1 ul{% for item in items %}li{{ item }}/li{% endfor %} /ul接下来处理异常问题拿detail举例先在polls/views.py中更新如下代码 from django.http import Http404 from django.shortcuts import renderfrom .models import Question# ... def detail(request, question_id):try:question Question.objects.get(pkquestion_id)# 如果指定问题 ID 所对应的问题不存在这个视图就会抛出一个 Http404 异常。except Question.DoesNotExist:raise Http404(Question does not exist)return render(request, polls/detail.html, {question: question})polls/templates/polls/detail.html中添加代码如下 !DOCTYPE html html langen headmeta charsetUTF-8title这是detail的模板渲染/title /head body{{ question.question_text }} /body /html当访问数据库中不存在的id时会出现404页面如下所示 get_object_or_404()函数 尝试用get()函数获取一个对象如果不存在就抛出Http404错误也是一个普遍的流程Django也提供了一个快捷函数get_object_or_404()作用于此下面是修改后的详情 detail()视图代码 from django.shortcuts import get_object_or_404, renderfrom .models import Question# ... def detail(request, question_id):question get_object_or_404(Question, pkquestion_id)return render(request, polls/detail.html, {question: question})为什么使用辅助函数get_object_or_404() 而不是自己捕获ObjectDoesNotExist异常呢还有为什么模型API不直接抛出ObjectDoesNotExist而是抛出Http404呢 因为这样做会增加模型层和视图层的耦合性指导Django设计的最重要的思想之一就是要保证松散耦合一些受控的耦合将会被包含在django.shortcuts模块中。 也有get_list_or_404()函数工作原理和get_object_or_404()一样除了get()函数被换成了filter()函数如果列表为空的话会抛出Http404异常。 更新polls/detail.html 模板里的代码 h1{{ question.question_text }}/h1 ul {% for choice in question.choice_set.all %}li{{ choice.choice_text }}/li {% endfor %} /ul模板系统统一使用点符号来访问变量的属性。在示例 {{ question.question_text }} 中首先 Django 尝试对 question 对象使用字典查找也就是使用 obj.get(str) 操作如果失败了就尝试属性查找也就是 obj.str 操作结果是成功了。如果这一操作也失败的话将会尝试列表查找也就是 obj[int] 操作。 在 {% for %} 循环中发生的函数调用question.choice_set.all 被解释为 Python 代码 question.choice_set.all() 将会返回一个可迭代的 Choice 对象这一对象可以在 {% for %} 标签内部使用。 去除硬编码 之前polls/index.html 里编写投票链接时链接是硬编码的 lia href/polls/{{ question.id }}/{{ question.question_text }}/a/li这种硬编码、强耦合的方法的问题在于在具有大量模板的项目中更改URL变得具有挑战性。 然而由于在polls.urls模块中的path()函数中定义了name参数所以可以通过使用 {% url %} 模板标签来消除对 url 配置中定义的特定 URL 路径的依赖 lia href{% url detail question.id %}{{ question.question_text }}/a/li这个标签的工作方式是在polls.urls模块的URL定义中寻具有指定名字的条目。之前 ‘detail’ 的 URL 是在如下语句中定义的 path(int:question_id/, views.detail, namedetail),如果想改变投票详情视图的URL比如想改成polls/specifics/12/就不用在模板里修改任何东西包括其它模板只要在polls/urls.py里稍微修改一下就行 path(specifics/int:question_id/, views.detail, namedetail),添加不同应用的命名空间 在实际Django项目中可能会有很多个应用Django如何分辨重名的 URL 呢举个例子polls应用有detail 视图可能另一个应用也有同名的视图。Django如何知道 {% url %} 标签到底对应哪一个应用的URL呢答案是在根 URLconf 中添加命名空间。 在polls/urls.py文件中稍作修改加上 app_name 设置命名空间 from django.urls import pathfrom . import viewsapp_name polls urlpatterns [path(, views.index, nameindex),path(int:question_id/, views.detail, namedetail),path(int:question_id/results/, views.results, nameresults),path(int:question_id/vote/, views.vote, namevote), ]编辑 polls/index.html 文件从 lia href{% url detail question.id %}{{ question.question_text }}/a/li修改为指向具有命名空间的详细视图 lia href{% url polls:detail question.id %}{{ question.question_text }}/a/li
http://www.w-s-a.com/news/919142/

相关文章:

  • 做网站可以申请个体户么网站的定位分析
  • jsp做的零食网站下载wordpress侧边栏折叠
  • 帝国网站单页做301南京旅游网站建设公司
  • 网站sem优化怎么做网站建设推广安徽
  • 比较好的室内设计网站潍坊网络科技
  • 南宁网站建设公设计联盟网站
  • 多个图表统计的网站怎么做百度推广费2800元每年都有吗
  • 连江县住房和城乡建设局网站企业类网站模版
  • 临沂seo整站优化厂家网站建设 大公司排名
  • 网站开发有哪些方式百度导航怎么下载
  • 网站认证免费视频直播网站建设方案
  • 瀑布流分享网站源代码下载网站构建的一般流程是什么
  • wordpress 4.9 多站wordpress邮箱解析
  • 微信网站开发企业汽车网站设计模板
  • 如何提升网站转化率遵义市公共资源交易平台
  • 网站目录管理模板企业解决方案部
  • 建设网站上申请劳务资质吗珠海哪个公司建设网站好
  • c2c商城网站建设在微信怎么开发公众号
  • 美的公司网站建设的目的做个网站要钱吗
  • 和县建设局网站孟州网站建设
  • 网站与规划设计思路竞价培训课程
  • 网站建设设计视频专业设计企业网站
  • 湖南省建设工程网站cerntos wordpress
  • 主机屋的免费空间怎么上传网站广告公司的经营范围有哪些
  • 门户网站建设公司案例门户建设是什么意思
  • 深圳seo专家东莞网站关键词优化排名
  • 套用别人产品图片做网站如何在阿里云自主建网站
  • 网站开发需要用哪些东西wordpress页面参数
  • 大连模板网站制作哪家好wordpress 安装不上
  • 宝塔搭建网站首页图片点击率如何提高