django学习笔记
什么是web框架?
框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演。
Web应用的流程:
|
//浏览器发送一个HTTP请求; //服务器收到请求,生成一个HTML文档; //服务器把HTML文档作为HTTP响应的Body发送给浏览器; //浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。 |
很好的Django学习网站 http://www.ziqiangxuetang.com/django/django-tutorial.html
Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西。为了达到这个目标,Django 提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。Django的理念是DRY(Don't Repeat Yourself)来鼓励快速开发!
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 全貌
urls.py
网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
views.py
处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。
models.py
与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。
forms.py
表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。
templates 文件夹
views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。
admin.py
后台,可以用很少量的代码就拥有一个强大的后台。
settings.py
Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。

创建一个Django项目



同步数据库
ligq@ligq:~/python/django/djTest$ python manage.py makemigrations Migrations for 'app1': app1/migrations/0001_initial.py: - Create model serverInfo ligq@ligq:~/python/django/djTest$ python manage.py migrate Operations to perform: Apply all migrations: admin, app1, auth, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying app1.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying sessions.0001_initial... OK ligq@ligq:~/python/django/djTest$
启用开发服务器
开发服务器,即开发时使用,一般修改代码后会自动重启,方便调试和开发,但是由于性能问题,建议只用来测试,不要用在生产环境。
ligq@ligq:~/python/django/djTest$ python manage.py runserver Performing system checks... System check identified no issues (0 silenced). November 29, 2016 - 07:02:18 Django version 1.10.3, using settings 'djTest.settings' Starting development server at http://127.0.0.1:8000/ #default port 8000 Quit the server with CONTROL-C.
python manage.py runserver 8001 #set port yourself
创建超级管理员
|
1
2
3
4
5
6
|
python manage.py createsuperuser# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填# 修改 用户密码可以用:python manage.py changepassword username |
新建一个对象的方法有以下几种:
-
serverInfo.objects.create(name="server1",passwd="1234!Qaz",ipaddres="127.0.0.1",status="0",osversion="ubuntu 16.04")
- dic={"name":"server2","passwd":"12345678","ipaddres":"127.0.0.1","status":"0","osversion":"ubuntu 16.04"}
serverInfo.object.create(**dic) # dict use -
p = serverInfo(name="WZ", age=23)
p.save()
-
p = serverInfo(name="TWZ")
p.age = 23
p.save()
-
serverInfo.objects.get_or_create(name="WZT", age=23)
这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象,第二个为True或False, 新建时返回的是True, 已经存在时返回False.

浙公网安备 33010602011771号