在前面的一和二中,分别实现了一些基础的操作,数据库和 Django 自带的管理界面,接下来,主要是创建我们自己的界面(视图)。

访问一个地址,对应的服务器直接返回一个视图。这是最常见的交互。

就好比访问 http://localhost:8000 会返回系统首页。

创建视图:polls/views.py

 def index(request):
return HttpResponse("Hello, world. You're at the polls index.") def detail(request,question_id):
#return HttpResponse("You're looking at the result of question %s ." % question_id)
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404(" Question does not exist !")
return render(request,'polls/detail.html',{'question':question})
def results(request, question_id):
response = "You're looking at the results of question %s."
return HttpResponse(response % question_id) def vote(request, question_id):
return HttpResponse("You're voting on question %s." % question_id)

修改路由信息:polls/urls.py

   
    # 默认进来首页
    path('', views.index, name='index'),
# ex: /polls/5
path('<int:question_id>/',views.detail,name='detail'),
# ex: /polls/5/results/
path('<int:question_id>/results/', views.results, name='results'),
# ex: /polls/5/vote/
path('<int:question_id>/vote/', views.vote, name='vote'),

打开服务器:

 py manage.py runserver

访问路径:  http://127.0.0.1:8000/polls/1/   进入  detail 视图。

在访问路径的时候,服务器视图必须要做的只有两件事:返回一个包含被请求页面内容的 HttpResponse 对象,或者抛出一个异常(比如 404 等)。

在上面的例子中,为什么模型 API 不直接抛出 ObjectDoesNotExist 而是抛出 Http404 呢?

因为这样做会增加模型层和视图层的耦合性。指导 Django 设计的最重要的思想之一就是要保证松散耦合。一些受控的耦合将会被包含在 django.shortcuts 模块中。

也有 get_list_or_404() 函数,工作原理和 get_object_or_404() 一样,除了 get() 函数被换成了 filter() 函数。如果列表为空的话会抛出 Http404 异常。

这些内容自行去尝试。

在配置了多项目之后,直接访问:http://localhost:8000   发现抱错如下:

需要在mysite.urls.py ,加上:path('', include('polls.urls')),   访问跟项目的时候,默认指定进入  polls/urls.py   找路径。

urlpatterns = [
path('', include('polls.urls')),
path('expolls/', include('expolls.urls')),
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]

也有多个应用是崇明,可以为 URL 添加命名空间。修改对应项目的 urls.py  文件。添加 属性 app_name=''

from django.urls import path

from . import views

app_name = 'polls'
urlpatterns = [
path('', views.index, name='index'),
path('<int:question_id>/', views.detail, name='detail'),
path('<int:question_id>/results/', views.results, name='results'),
path('<int:question_id>/vote/', views.vote, name='vote'),
]

修改为指向具有命名空间的详细视图:polls/templates/polls/index.html

<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>

个人随手记录。

最新文章

  1. Python :open文件操作,配合read()使用!
  2. 破解 失控神域 dat文件格式。
  3. Windows部署WordPress
  4. 第二篇:从 GPU 的角度理解并行计算
  5. sizeClass和autolayout学习资源整理
  6. dojo省份地市级联之省份封装类(一)
  7. SRS-开源流媒体服务器
  8. yii防止延迟用户多次点击按钮重复提交数据
  9. 脑残式网络编程入门(六):什么是公网IP和内网IP?NAT转换又是什么鬼?
  10. Java当出现未被捕获的异常应该如何处理
  11. 查看Windows系统里的进程已运行的时间
  12. 802.11n 连接的建议设置是什么?
  13. 简表-Java-Echart报表介绍
  14. redis与DB数据同步问题
  15. 四、spring成长之路——springIOC容器(下)
  16. npm的常用命令
  17. [Jobdu] 题目1348:数组中的逆序对
  18. java _this关键字的用法
  19. kali aquatone安装
  20. angularjs学习笔记2—运行phonecat项目

热门文章

  1. Go1.14发布了,快来围观新的特性啦
  2. opencv —— calcHist、minMaxLoc 计算并绘制图像直方图、寻找图像全局最大最小值
  3. Chrome的插件扩展程序安装目录
  4. powersploit的两个信息收集的脚本
  5. #《Essential C++》读书笔记# 第四章 基于对象的编程风格
  6. Java面向对象入门(2)-访问修饰符
  7. MongoDB高可用架构集群管理(一)
  8. linux操作系统搭建测试环境
  9. 1级搭建类104-Oracle 12cR2 单实例 FS(阿里云)公开
  10. css3基础-动画案例(没啥实用性,纯粹好玩的)