Django:学习笔记(2)——创建第一个应用
Django:学习笔记(2)——创建第一个应用
创建应用
在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。
我们可以执行如下命令,来创建myweb应用。
python manager.py startapp myweb
执行结束后,python为我们的项目创建好了一个遵循约定的目录结构
注意:我们做一个区分,我们使用django-admin startproject创建后生成的目录为项目目录,应用目录是创建在项目目录内的,项目目录内同时包含了一个和项目同名的目录,我们叫项目源目录,后文不在赘述。
创建第一个视图
我们在目录中的views.py文件里,写入第一个视图,Hello World
from django.http import HttpResponsedef index(request):return HttpResponse("Hello World!")
视图有了,我们还需要一个URL来映射到它,我们需要在该目录下创建一个urls.py文件
from django.conf.urls import url,includefrom . import viewsurlpatterns = [url('', views.index, name='index'),
]
下一步是要在根 URLconf 文件中指定我们创建的 myweb.urls
模块。在项目源目录urls.py
文件的 urlpatterns
列表里插入一个 include()
, 如下:
from django.conf.urls import url,include
from django.contrib import adminurlpatterns = [url('web/',include('myweb.urls')),url(r'^admin/', admin.site.urls)
]
现在我们已经可以通过访问/web路径,得到hello,world结果,效果如下图:
创建第一个模型
在 Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计。
说明:
模型是真实数据的简单明确的描述。它包含了储存的数据所必要的字段和行为。Django 遵循 DRY Principle 。它的目标是你只需要定义数据模型,然后其它的杂七杂八代码你都不用关心,它们会自动从模型生成。
我们现在做一个用户登录的例子,首先我们需要定义用户信息模型。
# 定义一个用户信息
class User(models.Model):username = models.CharField(max_length=16)password = models.CharField(max_length=16)gender = models.CharField()mail = models.EmailField()
代码非常直白。模型被表示为 django.db.models.Model
类的子类。每个模型有一些类变量,它们都表示模型里的一个数据库字段。
每个字段都是 Field
类的实例 - 比如,字符字段被表示为 CharField
,日期时间字段被表示为 DateTimeField
。这将告诉 Django 每个字段要处理的数据类型。每个 Field
类实例变量的名字也是字段名,所以最好使用对机器友好的格式。你将会在 Python 代码里使用它们,而数据库会将它们作为列名。
注意:我们可以使用
ForeignKey
定义了一个关系。这将告诉 Django,每个Choice
对象都关联到一个Question
对象。Django 支持所有常用的数据库关系:多对一、多对多和一对一,我们将在后面文章补充这部分内容。
激活模型
上面我们创建一个用户模型,它给了 Django 很多信息,通过这些信息,Django 可以为这个应用创建数据库表结构(生成 CREATE TABLE
语句),同时创建可以与User对象进行交互的 Python 数据库 API。但在这之前,我们需要做一些操作。
把应用安装到项目
但是首先得把myweb 应用安装到我们的项目里。为了在我们的工程中包含这个应用,我们需要在项目源目录的setting.py中的 INSTALLED_APPS
中添加设置。因为 MyWebConfig
类写在文件 myweb/apps.py
中,所以它的点式路径是 'myweb.apps.MyWebConfig'
。如下图所示:
将模型同步到数据库
我们的模型创建好了以后,我们需要执行一些方法,告知django将我们写好的user模型同步到数据库中,即创建相应的表结构。
我们需要执行一次数据迁移,通过运行 makemigrations
命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移,这一点很像Git,但是记住它只是记录一下你的修改操作而已。
django会在我们应用的migrations下创建迁移文件。
接着,我们再运行migrate命令,在数据库里创建新定义的模型的数据表。
python manage.py migrate
说明:我们也可以通过迁移文件,来查看会执行哪些SQL命令。
python manage.py sqlmigrate myweb 0001
总之,我们在修改模型后,需要执行两步操作来将新的模型同步到数据库中。
实践:实现用户注册
首先,我们还是要回顾一下这篇文章的内容,我们知道了如何创建一个视图以及设置URL映射、如何创建一个模型并且同步到数据库中,现在我们来实践一下实现用户注册。
在视图的处理中,我们可以做任何事情,并且返回任何我们需要反馈的信息。首先在想要获取到用户的请求信息,它们都被保存在request.GET和request.POST这两个字典中。
[文件:myweb/views.py]
def addUser(request):# 创建用户对象user = User()# 获取请求数据user.username = request.GET['username'];user.password = request.GET['password'];# 保存user.save();return HttpResponse('<p>用户添加成功</p>');
接着,我们在应用的urls.py中添加URL映射关系
[文件:myweb/urls.py]
urlpatterns = [url("add",views.addUser)
]
按照GET方式,我们在访问时,需要在URL中拼接请求信息,如下
至此,我们的第一个实践内容结束,我们完成了一个获取用户请求信息,并调用模型内置方法将数据保存到数据库。
转载于:https://www.cnblogs.com/MrSaver/p/10374584.html
Django:学习笔记(2)——创建第一个应用相关推荐
- openstack学习笔记三 创建第一个实例
登陆admin 创建一个基本网络 镜像 已经安装好操作系统的硬盘文件 计算--镜像--创建镜像 名称 centos7.2-1511 镜像源 镜像地址 镜像地址 http://mirror ...
- Django学习笔记---第一天
Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...
- django 学习笔记
django 学习笔记 启动虚拟机: workon bj18_py3 创建一个项目: django-admin.py startproject mysite 启动开发用服务器:从外层项目 mysite ...
- django学习笔记03
原创博客地址:django学习笔记03 第一章,模型层 查询集API 一.QuerySet何时被提交 迭代 QuerySet是可迭代的,在首次迭代查询集时执行实际的数据库查询 切片:如果使用切片的&q ...
- django学习笔记01
原创博客地址:django学习笔记01 基于教程,刘江的博客教程Django教程:https://www.liujiangblog.com/course/django/87 第一章:模型层 1.1 模 ...
- 千锋Django学习笔记
千锋Django学习笔记 文章目录 千锋Django学习笔记 写在前面 1. MVC和MTV 2. Django简介 3. MTV简单流程 4. 和Model的简单对接 5. Model 6. Tem ...
- spring学习笔记02-spring-bean创建的细节问题
spring学习笔记02-spring-bean创建的细节问题 三种创建Bean对象的方式 Bean的作用范围 Bean的生命周期 <?xml version="1.0" e ...
- JavaScript学习笔记:创建、添加与删除节点
JavaScript学习笔记:创建.添加与删除节点 文章目录 JavaScript学习笔记:创建.添加与删除节点 一.DOM对象节点类型 二.创建节点 1.创建元素节点 2.创建文本节点 3.创建属性 ...
- django学习笔记02
原创博客地址:django学习笔记02 第一章:模型层 1.8 查询操作 一.创建对象 1 2 3 4 5 >>> from blog.models import Blog > ...
最新文章
- Bag of Word
- 好好学python · 你真的会列表吗(列表推导式质检员)
- Lumia 800 7.10.8858.136
- hdu 4496 并查集 逆向 并查集删边
- 大数据集群部署时ssh的公钥和似钥作用汇总
- py脚本:linux系统下定时清理文件
- SVN快速入门3——整合eclipse(1)
- pythondraw解释_科学网—Draw figures with Python - 高琳琳的博文
- Sublime Text 3.1 编辑管理工程(项目)
- oracle数据库:恢复delete的数据
- 【XML基础】XML语言简介及简单例子
- foxmail超大附件服务器文件怎么删,电脑中使用Foxmail发送超大附件的方法
- Mint20系统安装微信
- 《数据结构与算法实战-周强-2.2》——大炮打蚊子
- 文言文编程火了,可我完全学不懂
- Linux内存管理二(页表)
- 如何用postman测试导出excel接口
- 关于unity3d插件——easy touch
- 2021全新改版影视app系统源码(全开源)
- 给赞!移动端网页调试利器-uc开发者工具
热门文章
- Hexo 博客添加 README.md 以及部署到 GitHub 丢失/显示不正常解决方法
- 改了一行代码,MySQL查询效率提升了80%,老板奖了我50万
- 【NC51 合并k个已排序的链表】K路归并
- 【HDU - 6558】The Moon(期望dp)
- 【HDU - 3499】 Flight (单源最短路+优惠问题)
- 函授本科统考计算机考试时间,函授2006级计算机、机电本科第一学期考试时间安排.doc...
- python函数实例解析_python支持返回函数的实例解析
- android 仿ios timepicker,android:TimePicker仿照IOS時間選擇器,可自定義選擇器
- java循环左一_左旋转字符串(Java)-循环Index方式
- 垂直梯形校正画质损失多少_投影小常识 梯形矫正竟会影响清晰度