一、新建一个Django程序(window 7进入cmd里面操作):注意,此处要需在指定的文件夹下
  a,django-admin startproject django_test(django_test指的是项目名称)
  b,进入django_test [cd django_test]
  c,创建app[python manage.py startapp test_01]
  d,进入project运行项目[python manage.py runserver]-------然后可以在浏览器中查看http://127.0.0.1:8000/,有It's worked,即表示创建成功

二、url常用匹配方法1--直接显示urls:

在django_test下的urls.py文件中输入以下代码

from django.conf.urls import include, url
from django.contrib import admin
from test_01 import views urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^articles/$', views.special_case),
]

然后在test_01的views文件中创建函数special_case,即:

from django.shortcuts import render
from django.shortcuts import HttpResponse def special_case(request):
return HttpResponse("It's ok")

运行http://127.0.0.1:8000/articles/即可查看【It’s ok】已经生效。

同时,还有以下几种url直接匹配方式:两种匹配方式有些许区别(具体区别后续附上)

urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/([0-9]{4})/$', views.year_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive),
url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/$', views.article_detail),
]


此处的views文件代码如下:

def year_archive(request,year):
print("---->",year)
return HttpResponse(year) def month_archive(request,year,month):
print("--->",year,month)
return HttpResponse("%s %s"%(year,month))

三、url常用匹配方法2--通过app聚合url来使一部分urls聚集在某一个app下:

1.首先在django_test下的urls.py文件中引入payment_urls

from django.conf.urls import include, url
from django.contrib import admin
from test_01 import views
from test_01 import urls as payment_urls urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^articles/$', views.special_case),
url(r'^payment/',include(payment_urls)),
]

然后在test_01下新建一个urls.py文件,如下:

from django.conf.urls import include, url
from django.contrib import admin
from test_01 import views urlpatterns = [
url(r'^$',views.index),
]

最后在test_01下的views文件中创建一个index函数

def index(request):
HttpResponse("*****Welcome to the payment mall*****")

需要复杂一点的话,就是此段

def index(request):
if request.method == "GET":
user_infos = [
{'username':'Lemon0', 'name':'Lemon Li0'},
{'username':'Lemon1', 'name':'Lemon Li1'},
{'username':'Lemon2', 'name':'Lemon Li2'},
{'username':'Lemon3', 'name':'Lemon Li3'},
]
return render(request,'test_01/index.html')
else:
return HttpResponse("*****Welcome to the payment mall*****")

此处需要配置django_test下的settings文件:首先在INSTALLED_APPS中加入“test_01”,然后在 TEMPLATES下改DIRS文件      'DIRS': [os.path.join(BASE_DIR,"templates")],

同时,此处引入了html文件,需要在templates下新建一个index.html文件,如果没有templates创建该文件即可,index.html文件如下。然后运行http://127.0.0.1:8000/payment/即可

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <h1>Welcome to the payment center</h1>
<ul>
{% for user_obj in user_objs %}
<li style="background-color:red">username:{{user_obj.username}},name:{{user_obj.name}}</li>
{% endfor %}
</ul> </body>
</html>

四、url常用匹配方法3--url的合理利用重复性:如

from django.conf.urls import url
from . import views urlpatterns = [
url(r'^(?P<page_slug>[\w-]+)-(?P<page_id>\w+)/history/$', views.history),
url(r'^(?P<page_slug>[\w-]+)-(?P<page_id>\w+)/edit/$', views.edit),
url(r'^(?P<page_slug>[\w-]+)-(?P<page_id>\w+)/discuss/$', views.discuss),
url(r'^(?P<page_slug>[\w-]+)-(?P<page_id>\w+)/permissions/$', views.permissions),
]

为了不必要写这么多代码,可以用下面的方法替代:

from django.conf.urls import include, url
from . import views urlpatterns = [
url(r'^(?P<page_slug>[\w-]+)-(?P<page_id>\w+)/', include([
url(r'^history/$', views.history),
url(r'^edit/$', views.edit),
url(r'^discuss/$', views.discuss),
url(r'^permissions/$', views.permissions),
])),
]

2.同时,也可以在urls中标记,方便后续的查找,如:

urlpatterns = [ url(r'^blog/(?P<year>[0-9]{4})/$',views.year_archive, {'foo': 'bar'}),]

五、Django Views

1.最简单的返回一个字符串形式的view

from django.http import HttpResponse

def my_view(request):
if request.method == 'GET':
# <view logic>
return HttpResponse('result')

返回一个html文档用render

from django.shortcuts import render,HttpResponse

def test_view(request):
return render(request,'index.html') # 多级html文档返回
  
  return render(request, 'test_01/book_modelform.html')

关于render

help文档中描述如下:

render(request, template_name, context=None, content_type=None, status=None, using=None)

Returns a HttpResponse whose content is filled with the result of calling django.template.loader.render_to_string() with the passed arguments.

此方法的作用---结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。

通俗的讲就是把context的内容, 加载进templates中定义的文件, 并通过浏览器渲染呈现.

讲解:

request: 是一个固定参数, 没什么好讲的。

template_name: templates 中定义的文件, 要注意路径名. 比如'templates\polls\index.html', 参数就要写‘polls\index.html’

context: 要传入文件中用于渲染呈现的数据, 默认是字典格式

content_type: 生成的文档要使用的MIME 类型。默认为DEFAULT_CONTENT_TYPE 设置的值。

status: http的响应代码,默认是200.

using: 用于加载模板使用的模板引擎的名称。

常见的MIME类型(通用型):

超文本标记语言文本 .html text/html
xml文档 .xml text/xml
XHTML文档 .xhtml application/xhtml+xml
普通文本 .txt text/plain
RTF文本 .rtf application/rtf
PDF文档 .pdf application/pdf
Microsoft Word文件 .word application/msword
PNG图像 .png image/png
GIF图形 .gif image/gif
JPEG图形 .jpeg,.jpg image/jpeg
au声音文件 .au audio/basic
MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
MPEG文件 .mpg,.mpeg video/mpeg
AVI文件 .avi video/x-msvideo
GZIP文件 .gz application/x-gzip
TAR文件 .tar application/x-tar
任意的二进制数据 application/octet-stream

举例

from django.shortcuts import render  

def my_view(request):
# View code here...
return render(request, 'myapp/index.html', {
'foo': 'bar',
}, content_type='application/xhtml+xml')

Django框架Day1------之url和views的更多相关文章

  1. Python的Django框架中的URL配置与松耦合

    Python的Django框架中的URL配置与松耦合 用 python 处理一个文本时,想要删除其中中某一行,常规的思路是先把文件读入内存,在内存中修改后再写入源文件. 但如果要处理一个很大的文本,比 ...

  2. Django框架之正则表达式URL误区

    问题:我学习的视频大概是2015年录的,里面用的Django版本比较老关于正则表达式URL这一块都是用的url("url(r'^admin/', admin.site.urls)," ...

  3. 潭州课堂25班:Ph201805201 django框架 第二课 url,,include,kwargs,name的使用 (课堂笔记)

    url 路由配置 这里的 name 由用户输入,得到参数 /<>/是获取用户输入值 这里的 name 默认接收的是 str 如果要接收 int 时: 当输入参数非数字时提示错误 最常用是 ...

  4. Django框架的安装与使用

    Django框架的安装与使用 在使用Django框架开发web应用程序时,开发阶段同样依赖wsgiref模块来实现Server的功能,我们使用Django框架是为了快速地开发application, ...

  5. 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

    Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一.urls.py模块 这个模块是配置路由映射的模块,当用户访问一个 ...

  6. 二 Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

    Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一.urls.py模块 这个模块是配置路由映射的模块,当用户访问一个 ...

  7. day73 Django框架之URL

    Django框架之url路由层一 Django数据库的一对多与多对多表的建立 一对多  publish_id的建立:publish=models.ForeignKey(to='Publish', to ...

  8. 第三百零五节,Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性

    Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRe ...

  9. Django框架_URLconf、Views、template、ORM

    目录: 一.Django-MTV MTV模型 Django基本命令 视图层之路由配置系统(views) 视图层之视图函数(views) 模板层(template) 二.Django-model基础 O ...

  10. 三 Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性

    Django框架,Views(视图函数),也就是逻辑处理函数里的各种方法与属性 Views(视图函数)逻辑处理,最终是围绕着两个对象实现的 http请求中产生两个核心对象: http请求:HttpRe ...

随机推荐

  1. Mybatis的插件 PageHelper 分页查询使用方法

    参考:https://blog.csdn.net/ckc_666/article/details/79257028 Mybatis的一个插件,PageHelper,非常方便mybatis分页查询,国内 ...

  2. Codeforces-348E Pilgrims

    #4342. CF348 Pilgrims 此题同UOJ#11 ydc的大树 Online Judge:Bzoj-4342,Codeforces-348E,Luogu-CF348E,Uoj-#11 L ...

  3. js中call、apply、bind的区别和应用

    一.总体概述 这三个方法都是改变函数本身的this指向的,但是略有不同 1.call 使用方法:函数名.call(this指向,展开的参数列表); 如果传入的this指向是null或者是undifin ...

  4. 微信小程序——tab导航栏

    wxml: <view class="tab">  <view class="tab-left" bindtap="tabFun&q ...

  5. 查找IE中网页的源代码

    一般我们在查看网页的源代码时,在网页上右键就能点击“查看源代码”.但是有些网页的右键功能被屏蔽了.这时候我们可以在ie菜单栏的“查看”选项里“源”查找. 如果发现ie菜单没在的话,点击键盘上的“Alt ...

  6. 469 Same Tree

    原题网址:https://www.lintcode.com/problem/same-tree/description 描述 检查两棵二叉树是否等价.等价的意思是说,首先两棵二叉树必须拥有相同的结构, ...

  7. 机器学习入门:K-近邻算法

    机器学习入门:K-近邻算法 先来一个简单的例子,我们如何来区分动作类电影与爱情类电影呢?动作片中存在很多的打斗镜头,爱情片中可能更多的是亲吻镜头,所以我们姑且通过这两种镜头的数量来预测这部电影的主题. ...

  8. Java面试总结-基础篇1

    java多线程-- 自旋锁,偏向锁 好处:可以举Servlet和CGI的对比用户线程和守护线程的区别:用户线程结束后JVM会退出,然后守护线程才会终止(比如垃圾回收线程),如何在java中创建守护线程 ...

  9. JEECG-Boot 开发环境准备(一):技术点

    需要掌握的基础知识 序号 知识点 资料 1 Npm 命令 http://www.runoob.com/nodejs/nodejs-npm.html 2 Node.js 入门 http://www.ru ...

  10. PAT甲级——A1031 Hello World for U

    Given any string of N (≥) characters, you are asked to form the characters into the shape of U. For ...