Web开发之django(一基础篇)


什么是web框架?

框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。对于,所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。

############################################################################################

基本配置一、创建django程序终端命令:django-admin startproject sitenameIDE创建Django程序时,本质上都是自动执行上述命令其他常用命令:  python manage.py runserver 0.0.0.0  python manage.py startapp appname  python manage.py syncdb  python manage.py makemigrations   python manage.py migrate    python manage.py createsuperuser

二、静态文件

STATICFILES_DIRS = (        os.path.join(BASE_DIR,‘static‘),    )

MVC和MTV模式:

著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。

Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:            Model(模型):负责业务对象与数据库的对象(ORM)            Template(模版):负责如何把页面展示给用户            View(视图):负责业务逻辑,并在适当的时候调用Model和Template此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

一,Django URL(路由系统)

URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。

1 urlpatterns = [2    url(正则表达式, views视图函数,参数,别名),3 ]

参数说明:

一个正则表达式字符串一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串可选的要传递给视图函数的默认参数(字典形式)一个可选的name参数

url实例:

from django.conf.urls import urlfrom django.contrib import adminfrom app01 import views

urlpatterns = [

url(r‘^articles/2003/$‘, views.special_case_2003),

#url(r‘^articles/[0-9]{4}/$‘, views.year_archive),

url(r‘^articles/([0-9]{4})/$‘, views.year_archive),  #no_named group

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),

]

from django.conf.urls import urlfrom app01 import views

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),]

二,Models数据库的配置

1 django默认支持sqlite,mysql, oracle,postgresql数据库。django默认使用sqlite的数据库,默认自带sqlite的数据库驱动, 引擎名称:django.db.backends.sqlite3

2 mysql驱动程序    MySQLdb(mysql python)    mysqlclient    MySQL    PyMySQL(纯python的mysql驱动程序)

3 在django的项目中会默认使用sqlite数据库,在settings里有如下设置:如果我们想要更改数据库,需要修改如下:DATABASES={    ‘default‘:{        ‘ENGINE‘:‘django.db.backends.mysql‘,        ‘NAME‘:‘django"_com‘,        ‘USER‘:‘root‘,        ‘PASSWORD‘:‘password‘,        ‘HOST‘:‘......‘,        "PORT":‘......‘,    }}

三,Template基础(模板系统的介绍)

模版的组成组成:HTML代码+逻辑控制代码

逻辑控制代码的组成1  变量(使用双大括号来引用变量): {{var_name}}   深度变量的查找(万能的句点号)

2 标签(tag)的使用(使用大括号和百分比的组合来表示使用tag)

{% if %} 的使用:{% if %}标签计算一个变量值,如果是“true”,即它存在、不为空并且不是false的boolean值,系统则会显示{% if %}和{% endif %}间的所有内容{% if num >= 100 and 8 %}

{% if num > 200 %}        <p>num大于200</p>    {% else %}        <p>num大于100小于200</p>    {% endif %}

{% elif num < 100%}    <p>num小于100</p>

{% else %}    <p>num等于100</p>

{% endif %}

{% for %}的使用{% for %}标签允许你按顺序遍历一个序列中的各个元素,每次循环模板系统都会渲染{% for %}和{% endfor %}之间的所有内容< ul >{ %for obj in list %}    < li > {{obj.name}} < / li >{ % endfor %}< / ul >

{%csrf_token%}:csrf_token标签用于生成csrf_token的标签,用于防治跨站攻击验证。注意如果你在view的index里用的是render_to_response方法,不会生效其实,这里是会生成一个input标签,和其他表单标签一起提交给后台的。

{% url %}:  引用路由配置的地址

{% with %}:用更简单的变量名替代复杂的变量名{% with total=fhjsaldfhjsdfhlasdfhljsdal %} {{ total }} {% endwith %}

{% verbatim %}: 禁止render

{% load %}: 加载标签库

3 自定义filter和simple_taga、在app中创建templatetags模块(必须的)b、创建任意 .py 文件,如:my_tags.pyc、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py :{% load my_tags %}d、使用simple_tag和filter(如何调用)e、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.from django import templatefrom django.utils.safestring import mark_safe

register = template.Library()   #register的名字是固定的,不可改变

@register.filterdef filter_multi(v1,v2):    return  v1 * v2

@register.simple_tagdef simple_tag_multi(v1,v2):    return  v1 * v2

@register.simple_tagdef my_input(id,arg):    result = "<input type=‘text‘ id=‘%s‘ class=‘%s‘ />" %(id,arg,)    return mark_safe(result)

-------------------------------.html{ % load xxx %}  # 首行

# num=12{{num | filter_multi: 2}}  # 24

{{num | filter_multi: "[22,333,4444]"}}

{ % simple_tag_multi 2 5 %}  参数不限, 但不能放在if for语句中{ % simple_tag_multi num 5 %}

4 extend模板继承{ % extends "base.html" %}

{ % block title %}The current time{ % endblock %}

{ % block content %}< p > It is now {{current_date}}. < / p >{ % endblock %}

四,Views(视图函数)

HttpResponse:传入一个数据,返回一个字符串render(request,"xxx.html",{"obj":xx_"list"}    1、找到html模版,open函数打开获取到内存    2、Django的模版引擎: html模版的内容 + 数据 => 渲染(替换) ===》 最终字符串    3、HttpResponse(最终字符串)redirect:页面跳转。

request请求(Request对象的属性和方法):

path:       请求页面的全路径,不包括域名method:     请求中使用的HTTP方法的字符串表示。全大写表示。GET:         包含所有HTTP GET参数的类字典对象POST:       包含所有HTTP POST参数的类字典对象COOKIES:     包含所有cookies的标准Python字典对象;keys和values都是字符串。session:    唯一可读写的属性,代表当前会话的字典对象;自己有激活Django中的session支持时该属性才可用。FILES:      包含所有上传文件的类字典对象;
时间: 2024-08-24 02:10:22

Web开发之django(一基础篇)的相关文章

Python开发【第二十一篇】:Web框架之Django【基础】

Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-a

[Java Web] 3\WEB开发之HTML基础程序试手

1.初试: 1 <html> 2 <body> 3 <h1>My First Heading</h1> 4 <p>My first paragraph.</p> 5 </body> 6 </html> 2.标题: HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的.显然由大标题变为小标题.... 1 <html> 2 <body> 3

测试开发之Django——No4.Django中前端框架的配置与添加

我们在开发一个web项目的时候,虽然我们不是专业开发,但是我们也想要做出来一个美美的前端页面. 这种时候,百度上铺天盖地的前端框架就是我们的最好选择了. 当然,在网上直接下载的框架,我们是不能直接用的,所以本篇介绍一下我们怎么样来修改这个模板 首先,我们先下载一个免费的模板. 我们可以看到他的目录结构,用浏览器打开index.html文件之后可以看到模板的样式. 这样我们就可以想要哪个地方,复制哪个地方,到我们的代码里面了.给我们节省了很多编写前端的时间. 那么我们来看一下这个模板我们要怎么去做

Web开发之RSET API

REST介绍 如果要说什么是REST的话,那最好先从Web(万维网)说起. 什么是Web呢?读者可以查看维基百科的词条(http://zh.wikipedia.org/zh-cn/Web),具体的我就不多说了.总之,Web是我们在互联网上最常用的服务,甚至在某些人的心中,互联网就是Web.当然,Web只是互联网的一部分而已,只是大家用的最多而已,我们访问的所有网站都是基于Web. 那么,Web和REST之间究竟有什么关系呢?我们接下来将聊聊组成Web的几大基础技术,URI(统一资源标识符,用来标

Python之路【第十六篇】:Django【基础篇】

Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver

HTML5+JS手机web开发之jQuery Mobile初涉

一.起始之语 我一直都是在PC上折腾网页的,这会儿怎么风向周边捣鼓起手机网页开发呢?原因是公司原先使用Java开发的产品,耗了不少人力财力,但是最后的效果却不怎么好.因为,Android系统一套东西,iPhone又是新的一套,折腾死人呐. 于是总监发狠,让我把手上的活都交出去,专心折腾web版的,看看最后效果如何. 加上我觊觎手机上的开发学习很久了,于是,一拍即合,搞起了手机开发方面的学习. 分享是很好的提高自身学习的方法.因为分享过程中梳理了所学,往往会有些意想不到的心得与收获.如此利人利已的

【Go web开发之revel+mgo】第11章 部署到heroku上

演示地址  http://gblog-revel.herokuapp.com/ 1.申请mongohq 关于如何在注册heroku和mongohq帐号,我在之前的blog里面有说明,http://blog.csdn.net/joveth/article/details/19999535 这里简单的说一下,还记得我们的models/dao.go文件里的NewDao方法中被注释的那一行吗? session, err := mgo.Dial("mongodb://omind:[email protec

Python Web框架【Django框架第一篇基础】

Django框架第一篇基础[DjangoMTV模式] 老师博客[www.cnblogs.com/yuanchenqi/articles/6811632.html] 同学博客:http://www.cnblogs.com/haiyan123/p/7701412.html Django官网:https://www.djangoproject.com/download/ 一.安装Django DjangoMTV模式 Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代

Django【基础篇】

Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 基本配置 一.创建django程序 终端命令:django-admin startproject sitename IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python manage.py runserver 0.0.0.0 python manage.py st