Django:学习笔记(2)——创建第一个应用

创建应用

  在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。

  我们可以执行如下命令,来创建myweb应用。

python manager.py startapp myweb

  执行结束后,python为我们的项目创建好了一个遵循约定的目录结构

  

注意:我们做一个区分,我们使用django-admin startproject创建后生成的目录为项目目录,应用目录是创建在项目目录内的,项目目录内同时包含了一个和项目同名的目录,我们叫项目源目录,后文不在赘述。

创建第一个视图

  我们在目录中的views.py文件里,写入第一个视图,Hello World

from django.http import HttpResponse

def index(request):
return HttpResponse("Hello World!")

  视图有了,我们还需要一个URL来映射到它,我们需要在该目录下创建一个urls.py文件

from django.conf.urls import url,include

from . import views

urlpatterns = [
url('', views.index, name='index'),
]

  下一步是要在根 URLconf 文件中指定我们创建的 myweb.urls 模块。在项目源目录urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:

from django.conf.urls import url,include
from django.contrib import admin urlpatterns = [
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中拼接请求信息,如下

  

  至此,我们的第一个实践内容结束,我们完成了一个获取用户请求信息,并调用模型内置方法将数据保存到数据库

Django:学习笔记(2)——创建第一个应用的更多相关文章

  1. Django学习笔记---第一天

    Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...

  2. Django学习笔记(一)——安装,创建项目,配置

    疯狂的暑假学习之 Django学习笔记(一) 教材  书<The Django Book> 视频:csvt Django视频 1.创建项目 django‐admin.py startpro ...

  3. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  4. Django 学习笔记(二)

    Django 第一个 Hello World 项目 经过上一篇的安装,我们已经拥有了Django 框架 1.选择项目默认存放的地址 默认地址是C:\Users\Lee,也就是进入cmd控制台的地址,创 ...

  5. Django 学习笔记(七)数据库基本操作(增查改删)

    一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...

  6. Django学习笔记(4)——Django连接数据库

    前言 在MVC或者MTV设计模式中,模型(M)代表对数据库的操作.那么如何操作数据库呢?本小节就认真学习一下.首先复习一下Django的整个实现流程 ,然后再实现一下使用数据库的整个流程,最后学习一下 ...

  7. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

  8. Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API

    用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...

  9. Django学习笔记(20)——BBS+Blog项目开发(4)Django如何使用Bootstrap

    本文学习如何通过Django使用Bootstrap.其实在之前好几个Django项目中已经尝试使用过了Bootstrap,而且都留有学习记录,我已经大概有了一个大的框架,那么本文就从头再走一遍流程,其 ...

随机推荐

  1. Visual Studio中“后期生成事件命令行” 中使用XCopy命令

    将程序所依赖的动态库与其他依赖文件做了分类,使用XCopy命令自动生成相应的目录结构. set source="$(TargetDir)" set output="$(S ...

  2. 为 Ruby 程序员准备的 Go 入门教程

    这是我翻译的国外博客,如需转载请注明出处和原文链接 那些在Google的大牛们开发出了一种称为Go的牛叉的语言.乍一看,Ruby和Go有点像远房表亲.其实不然,他们那些互为补充的功能却让他们成为一对完 ...

  3. python笔记2-数据类型:元组、字典常用操作

    元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. tp=(1,2,3,'a','b' ...

  4. 第二百一十八节,jQuery EasyUI,TimeSpinner(时间微调)组件

    jQuery EasyUI,TimeSpinner(时间微调)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 TimeSpinner(时间微 ...

  5. jdk从1.8降到1.7的办法

    jdk从1.8降到1.7的办法 正常情况下,JDK的升降级只需更改环境变量即可,可是到了1.8版本,oracle使了一点小手段--在系统Path中添加一条变量C:/ProgramData/Oracle ...

  6. abp项目如何按业务功能模块横向分割?

    1.为什么要做分层? 请先看项目分层的最后结构: 2.设计的初衷 项目较大,且主题鲜明,分为:BI模块.DM-用户洞察模块.Manage-应用管理模块.Report应用分析报表模块,大模块之间并无依赖 ...

  7. unity 打开文件夹并鼠标选中某文件

    System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "explor ...

  8. Numpy常用金融计算(一)

    In [41]: a=[1,2,3,4,5,5,6,6,7,8,8,9,9] # list类型数组 In [42]: b=nu.mean(a) #调用numpy.mean方法计算数组元素的算术平均值 ...

  9. SharePoint 2013/2010 在一个列表或文档库内移动列表项,文档和目录位置而保持last modify by 等系统字段保持不变

    本文讲述SharePoint 2013/2010 在一个列表或文档库内移动列表项.文档和目录位置而保持last modify by 等系统字段保持不变的解决方式. 近期遇到客户一个需求,在一个列表或文 ...

  10. 用pypy运行ryu

    最近看到pypy可以提高python的运行速率到很变态的境地,加之现在ryu发现拓扑的能力有限,不能满足实验要求,所以想将其试着在pypy上运行 部署pypy在virtualenv,在学python初 ...