一、views中不直接调用app的方法,而是include app内的一个方法文件,而url目录是根目录下的总目录。
(调用了其他文件的方法,把方法转移到了app内,并添加了app方法内的路径,不添加用url(r'^$',views.index)限制url为空)
使用include,在根urls.py引入include,在app目录下创建urls.py,格式与根相同,根urls.py中第二个参数改为include('blog.urls')
view中 1和响应对应一个函数,request就是传递过来的url
url.py中的第一个参数需要传递的url(通过正则表达式),传递符合正则表达式才有返回
第二个参数就是方法(在view.py中定义)也可以include其他的函数。,符合regix,调用view中的函数进行处理
二、templates
Templates 就是html文件,用Django模板语言,也可以用其他模板(如jinja2)
主要点在于render函数(渲染的意思,返回template文件夹下某个文件内容)
return HttpResponse('hello,world')直接返回hello,world,把结果返回给浏览器。
return render(request,'index.html')返回template文件夹下的index.html
DTL使用方法,第三个参数可以用dict{},键值对,键是参数,值是要传的值,模板文件中用{{key}}}
return render(request,'index.html',{'hello':'hello,world'}),返回template文件夹下的index.html文件内
注意点!!:不同app内templates下同名html文件会冲突!那么服务器在查找templates时,会取第一个app内的index.html。
为了返回对应的app内index.html,可以再templates内再创建一个与app名相同的目录,把index文件放进去。
三、models(数据表,ORM)
1个model对应数据库中的一张数据表
Django中models以类的形式出现
包含了一些基本字段以及数据的一些行为
(ORM)对象关系映射,实现了对象和数据库之间的映射关系,隐藏了数据访问的细节,不需要编写sql语句
和数据库交互的语句封装起来,转化为对类和对象的操作
四、创建字段
1、在app目录创建models.py,并引入models模块
2.创建类,继承models.Modle,该类即是一张数据表
3、在类中创建字段
字段创建(字段即是类的属性)
可选字段和属性从官方文档可查。常用的就几个
class Article(models.Model): title = models.CharField(max_length=32, default='Title') content = models.TextField(null=True)
五、模型映射到数据表
步骤
1、进入manage.py同级目录python manage.py makemigrations app名,生成迁移文件(可选,默认为所有app)
2、执行python manage.py migrate就可以生成数据表了
3、查看生成的sql语句
Django会自动再app内的migrations下生成移植文件
执行python manage.py sqlmigrate 应用名 文件id可以查看sql语句
4、查看数据库:SQLite Exprot personal轻量级数据库
5、页面呈现数据
view.py中import models ; article = models.Article.objects.get(pk=1) primary key,相当于执行了select from id=1
return render(request,'index.html',{'article':article})把article对象当做键值多的值传递
前端步骤:模板可直接使用对象,及对象的点操作符{{article.title}}
六、总结
models就是一个库,一个类对应1个表单,类的属性对应数据表的field
把对对象的操作转化为数据库操作(通过manage.py实现,把对象与表单建立映射关系 ORM)
最终再view.py中可以操作该对象,(render函数,对象可以作为键值对的值)html文件中给出key就可以
项目文件有settings(一些基础配置,如添加app,添加可访问host),urls.py接受url传给app中的url.py
app文件:urls.py models.py views.py对应MVC或者说MVT。urls.py是接受url,调用响应的处理函数。views.py是具体的函数逻辑,接受url后,方法从model.py中取数据表(就是构造1个类的对象,ORM),然后传给templates的html(动态文件)。最后展示到前端。
