首页 体育世界正文

Django形式

首要Django是遵从MVC形式的。

M:Model,模型,与数据库进行交互

V:View,视图 html页面

C:Controller,控制器,接纳恳求,处理,回来数据,与视图进行交互

MVC中重要的思维便是解耦,各自干自己的工作。

简略收拾一下思路:

比方一个登陆网页(也便是视图),点击登陆的时分,将账号和暗码发送到MVC结构中的控制器(Controller),咱们从控制器中进行处理,需求去查询数据库,可是这儿不会直接去操作数据库,咱们经过Model去进行操作数据库,回来也相同的。

在Django中,Django把控制器变成了Template,其实是相同的,便是姓名不相同了,他把自己的形式叫做MVT。

不同的是:V变成了和MVC中C的功用相同,T和MVC中的V功用相同。

尽管他自己叫做MVT,实质仍是遵从的MVC。

装置虚拟环境

装置一个和python相同的虚拟环境,使这个项目用到的模块与其他项目无关。

首要需求装置模块:

pip3 install virtualenv

上面操作密令比较复杂,装置一个扩展包:

pip3 install virtualenvwrapper-win

这时咱们创立一个虚拟环境都是在C盘,咱们给他换个途径。

增加环境变量:

此电脑->特点->高档->环境变量->在体系变量点击增加,变量名写WORKON_HOM敬酒词,Python之Django简介并快速练手,天津旅行攻略E,变量值写一个途径,(你创立虚拟环境想放的当地)

创立虚拟环境指令:mkvirtualenv 姓名

假如你装置了python3和python2 用-p指定用哪个版别。

退出虚拟环境:deactivate

进入一个虚拟环境:workon 姓名

检查自己创立了那些虚拟环境 workon

删去一个虚拟环境:rmvirtualenv 姓名

创立这个虚拟环境后,你装置的包都是在你设定的文件夹下。而且创立的指令都是相同的。

创立一个项目

1、创立虚拟环境:

咱们创立一个虚拟环境姓名为djangostudy:mkvirtualenv djangostudy

2、装置Django结构

装置Django结构(在虚拟环境中运用pip):pip install django==1.8.2(==表明指定本版,不加也能够)

检查咱们虚拟环境装置了上面模块:pip list。

3、创立一个项目

在创立项现在咱们创立一个文件夹来放咱们的项目:md 文件夹姓名

我就创立一个xuexi的目录了。履行创立文件夹的密令的时分,要切换到虚拟换件文件夹下。

创立了xuexi后,咱们cd xuexi到这个文件夹下。

创立一个项目:dj公交顶ango-admin startproject 项目姓名

我的项目姓名就写test1。

4、目录结构

能够看到在xuexi下看到:

test1

__init__ 阐明 test1 是一个python包

settings.py 装备文件

urls.py 路由装备

wsgi.py (wsgi协议)服务器和Django交互进口

manage.py 办理文件

5、创立一个运用

首要切换目录到test1中,cd test1。

一个模块对应一个运用,创立指令:python manage.py startapp 运用名

我这儿写student

进入你的刚刚创立的阿思欣泰运用你能够看到:

migrations

__init__ 阐明migrations是一个包

__init__ 阐明你的运用是一个包

admin.py 与网站后台办理相关

models.py 模型

te档案1974南海风云sts.py 测验代码文件

views.py 视图函数

6、将运用和项目联系起来

需求修正装备文件,为了方面修正pycharm翻开。

6.1、翻开装备文件settings.py.

6.2、找到INSTALLED_APPS,把咱们的英名姓名写进去。我陈薇茵写上(有个逗号):'student',

7、运转项目

在tese1下履行指令:python manage.py runserver

他会通知你在浏览器中输入127.0.0.1:8000/来拜访。

当咱们拜访呈现:

阐明咱们现已把项目运转起来了。

ORM结构

意思便是目标联系映射。

Django中内置ORM结构。运用这个结构让咱们在操作数据库的时分更简略。

不必再写一些简略的Sql句子,经过创立一个类,来一一对应数据库中表的字段。

经过操作类来操作数据库中的表。所以在Models中就写和数据库中表,字敬酒词,Python之Django简介并快速练手,天津旅行攻略段相同的类。

一起,他也能够依据你创立的类,来给你创立数据库中的表。

Models

咱们在Models.py中写上:

# 类姓名便是表名 ,承继models.Model表明是一个模型

class stuinfo(敬酒词,Python之Django简介并快速练手,天津旅行攻略models.Model):

# 姓名 CharField(max_length=20) 表明varchar(20)

stuname = models.Ch黄苏支案子arField(max_length=20)

# 生日 DateField日期类型

bri_date = models.DateField()

id绿帽男主键不必咱们写,他会主动生成

其他类型:

BooleanField(default=False) # bool类型,default默许值

ForeignKey('表名') # 设置外键 生成表的时分格局是 字段名_id ,赋值需求直接给目标。

假如我想让他生成一个表:

分为两步:先生成搬迁文件,运用搬迁文件再生成表

1、生成搬迁文件

履行指令:python manage.py makemigrations

这个文件会放在migrations目录下

2、运用搬迁文件再生成表

履行指令:python manage.py migrate

就会生成一个数据库,当然不是mysql数据库,在Django中假如不设置数据库用什么,会默许运用sqlite3数据库。这儿不多说。

经过Mod庞克莱门捷夫els去操作表:

导入模块

from stu深蓝星空dent.models import stuinfo

# 这儿有日期,就导入一下日期模块

from datetime import date

# 增加一条数据:

s = stuinfo()

s.stuname = '张三'

s.bri_date = dete('2000','1','1')

s.save()

# 查询一条数据 找到id = 1的数据

s1 = student.objects.杀鸡美拍get(id = 1)

# 查询一切

s2 = student.objects.all()

# 显现数据

s1.stuname

s1.bri_date

# 修正

s1.stuname = '123'

s1.save()

# 删去

s1.delete()

多表联查

咱们再在Models中增加一个类:

class person(models.Model):

# name

name = models.CharField(max_length=20)

# 外键

sid = models.ForeignKey('stuinfo')

多表联查有个外敬酒词,Python之Django简介并快速练手,天津旅行攻略键,咱们经过外键来查询

经过第一张表查询第二张表

s1 = student.objects.getexplose(id = 1)

# 这样就查询到 nid = 1 的person的表了,在表名后加_set

s1.person_set.all()

经过第二张表查询第一张表

p1 = person.objects.get(id = 1)

p1.student

p1.student.stuname # 查询到stuname值

增加第二张表

s1 = student.objects.get(id = 1)

p2 = person()

p2.name = '小花'

# 外键需求赋值一个目标

p2.sid = s1

# 查询外键值

赋值是一个目标,那咱们怎样查询到id值?

p3 = person.objects.get(id = 1)

# 这样才干查询到id值,在字典名后加_id

p3.nid_id

后台办理(admin)

Django给咱们供给了很快生成后台的办理页面。

1、修正成中文页面

修正setting文件,找到LANGUAGE_CODE='en-us'

把他修正成:LANGUAGE_CODE='zh-hans'

2、我国时刻

找到TIME_ZONE = 'UTC'修正成

TIME_ZONE = 'Asia/Shanghai'

3、创立办理员账户

履行指令:python manage.py createsuperuser

会提示输入用户名,邮箱(能够随意写)和暗码。自己设置一个就好了

4、运转项目

运转指令:python man立秋宋刘翰age.py runserver

5、登陆办理员页面

在浏览器中输性交换入127.0.0.1:8000/admin ,就会进入办理员页面,登陆就好了。

6、注册模型类

在admin.py中注册模型类,来协助咱们生成对应的办理页面。

对咱们的stuinfo表进入注册。

在admin.py中增加:

from student.models import stuinfo

admin.site.register(stuinfo)

这样就完结了对stui邱宏涛nfo表的注册。

接下来改写咱们的浏览器的办理页面。

就会多出一个队stuinfo表的办理。

咱们能够在里面临stuinfo表操作,增加数据。

保存之后会显现:

咱们看到显现的骑奴是一个英文,我想显现我的姓名怎样办?

这个stuinfo object 其实是咱们str(stuinfo)将一个目标转化为字符串的成果,

所以咱们只需求在Models中的stuinfo中重写__str__办法即可。

def __str__(self):

return self.stuname

就会变成:

在这个办理页能够进行增加。删去,修正,查询的操作。

自界说办理页面

在admin.py中创立自界说办理的类

留意:list_display这个姓名只能写这个姓名。

咱们的办理页面就会变成:

视图views

完结浏览器拜访127.0.0.1:8080/index,显现:我是index页。

在视图中写:

# 导入模块

from django.http import HttpResponse

界说index办法,有必要要有参数,(用于接纳参数)

def index(request):

return HttpResponse('我是index页')

在student目录下创立一个urls.py写上:

from django.conf.urls import url

from student import views

# 树立与视图的对应联系,urlpatterns不要变

#敬酒词,Python之Django简介并快速练手,天津旅行攻略 第一个是正则,匹配到回来的页面

urlpatterns = [

url(r'^index$', views.index),

]

修正test1问价下的urls.py:

修正urlpatterns成:

urlpatterns = [

url(r'^admin/', include(admin.site.urls)),

url(r'^', include('student.urls')), # 让其路由支撑student下的urls

]

即可。

收拾一下思路,浏览器输入127.0.0.1:8080/index,服务器会把index传递到test1的ur青草在线l,匹配正则,匹配带第二个匹配就会去studen公公偏头痛mvt下的urls中持续匹配,来完结办法的映射。

模板

1、创立一个文templates文件夹

2、在装备文件(setting.py)中设置网站模板的目录

在s敬酒词,Python之Django简介并快速练手,天津旅行攻略etting.py中找到:TEMPLATES的列表,

把DIRS修正成:

'DIRS':[os.path.join(BASE_DIR,'templates')]

# os.path.join()途径拼接,BASE_DIR项目的相对途径。

3、在templates下创立一个stuinfo文件夹,再在stuinfo文件夹下创立一个ht姜小力ml文件,写上:

4、在views中回来这个页面

# 加载模板,相当于读取该文件

loader.get_template('stuinfo/index.html')

# 给模板文件数据

# 第一个参数为request,第二个为字典,暂时没有数据传曩昔,为空

context = RequestContext(request, {})

# 把上面两个结合生成一个html

ret_html = temp.render(context)

# 回来给浏览器

return HttpResponse(ret_html)

现在拜访127.0.0.1:8000/index就会回来这是一个模板文件。

由上面咱们得知:咱们拜访不同的页面在views中仅仅 模板不同,参数不同。

咱们能够自己写一个办法来便当咱们的操作。

这样写了之后,咱们仍然能够拜访,可是这样的代码不许需求咱们来写,在Django中现已封装好了。

咱们直接写成:

就能够到达和咱们之前相同的作用。

4、怎么运用views中的参数字典?

例如咱们回来值写上:

def index(request):俞振强

# 调用上面的办法即可

return render(request, 'stuinfo/index.html',{'context':'我是传递过来的参数'})

在index.html中接纳:

# 两个花括号,中心直接写变量名

{{ context}}

这样咱们的数据就传递曩昔了。

在index.html中运用for循环:

咱们传递一个列表曩昔

def index(request):

# 调用上面的办法即可

return render(request, 'stuinfo/index.html'敬酒词,Python之Django简介并快速练手,天津旅行攻略,{'context':'我是传递过来的参数','list'杨一木:list(range(10))})

在index.html中便当循环出来

# 开端for循环

{% for i in list%}

{{i}}

# 结数for循环

{% endfor %}

即可。


版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

水痘症状,减持压顶:6天188笔套现 年内第2大解禁潮测压A股,薛丁山

  • 星巴克官网,6月12日汇连聚(上海)进口胶报价部分小幅下调,逆战