django搭建web小项目

创建项目

原文1:http://blog.csdn.net/yjx2323999451/article/details/53200243

原文2:http://www.cnblogs.com/benshan/p/4445074.html

原文3:http://www.runoob.com/django/django-first-app.html

--------------------------------------------------------------------------------------

连接mysql数据库

原文4:http://www.cnblogs.com/yangmv/p/5327477.html

原文5:http://www.cnblogs.com/taiguyiba/p/6058315.html

原文6:http://www.jb51.net/article/42870.htm

前提:

配置好python+django环境

1创建web服务器

使用cmd命令进入到存放项目的目录中执行以下命令:

python django-admin.py startproject mysite

成功后会在目录中出现 mysite 目录,此处创建的为开发服务器

2创建app:

一个项目中包含一个或多个这样的app。app可以理解为一块功能集合。比如产品管理模块就包含增删该查等功能,可以把产品管理叫做一个app。每个Django app都有独立的models,views等,易移植和被复用

使用cmd命令进入到mysite目录下(创建的web服务器目录)执行以下命令

python manage.py startapp test_pr

test_pr才是web应用程序

3创建模板文件的目录

在项目根目录下新建一个templates目录

4目录文件说明

子目录mysite下表示工程的全局配置,分别为setttings.py、urls.py和wsgi.py,其中setttings.py包括了系统的数据库配置、应用配置和其他配置,urls.py则表示web工程Url映射的配置。

子目录test_pr则是在该工程下创建的app,包含了models.py、tests.py和views.py等文件

templates目录则为模板文件的目录

manage.py是Django提供的一个管理工具,可以同步数据库等等

-----------------------------------------------------------------------------------------------------------------------------------------------

Django 里更关注的是模型(Model)、模板(Template)和视图(Views),Django 也被称为 MTV 框架 。

在 MTV 开发模式中:

M 代表模型(Model),即数据存取层。该层处理与数据相关的所有事务:如何存取、如何确认有效性、包含哪些行为以及数据之间的关系等

  T 代表模板(Template),即表现层。该层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。

  V代表View,业务逻辑层。这一层包含访问模型的逻辑和按照模板显示。你可以认为它是模型和模板的桥梁。

系统对app有一个约定:如果你使用了Django的数据库层(模型),你 必须创建一个django app。模型必须在这个app中存在。

5启动

在cmd中进入项目目录(cd d:*/mysite ),执行以下命令:

python manage.py runserver 0.0.0.0:8000

在浏览器中输入 127.0.0.1:8000,若能成功访问则表示启动成功

6添加web工程页面

打开test_pr/views.py文件,输入以下内容

1from django.http import HttpResponse 2 3 4def sayHello(request): 5 s = 'Hello World!' 6 current_time = datetime.datetime.now() 7 html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time) 8 return HttpResponse(html)

7url映射的配置

打开url.py文件

1from django.conf.urls import url 2from test_pr import views 3 4urlpatterns = [ 5 # url(r'^admin/', admin.site.urls), 6 url(r'^$', views.sayHello), 7]

重启服务,访问http://localhost:8000/

8逻辑和页面分离

8.1在模板目录下创建一个student.html文件,并写入以下代码

1<!DOCTYPE html> 2<html> 3 <head> 4 <title>hello</title> 5 </head> 6 <body> 7 <ul> 8 {% for student in students %} 9 <li> 10 id:{{ student.id }},姓名:{{ student.name }},age: {{ student.age }} 11 </li> 12 {% endfor %} 13 </ul> 14 </body> 15</html>

8.2修改 views.py文件,添加方法showStudents()

1 def showStudents(request): 2 list = [{id: 1, 'name': 'Jack'}, {id: 2, 'name': 'Rose'}] 3 return render_to_response('student.html',{'students': list})

8.3.添加url映射,打开url.py文件

1from django.conf.urls import url 2from test_pr import views 3 4urlpatterns = [ 5 # url(r'^admin/', admin.site.urls), 6 url(r'^$', views.sayHello), 7 url(r'^showStudents$', showStudents), 8]

8.4.修改settings.py模板配置:'DIRS': [BASE_DIR+r'\templates'],

1TEMPLATES = [ 2 { 3 'BACKEND': 'django.template.backends.django.DjangoTemplates', 4 'DIRS': [BASE_DIR+"/templates", ], 5 'APP_DIRS': True, 6 'OPTIONS': { 7 'context_processors': [ 8 'django.template.context_processors.debug', 9 'django.template.context_processors.request', 10 'django.contrib.auth.context_processors.auth', 11 'django.contrib.messages.context_processors.messages', 12 ], 13 }, 14 }, 15]

8.5.重启服务,访问http://localhost:8000/showStudents,出现:

原文:http://code.ziqiangxuetang.com/django/django-models.html

9.连接数据库

首先需要安装数据库驱动啦,即mysql_python,

如果你没安装 mysql 驱动,可以执行以下命令安装:

pip install mysqlclient

9.1配置数据库连接,打开settings.py文件编写代码

1DATABASES = { 2 'default': { 3 'ENGINE': 'django.db.backends.mysql', //数据库的类型 4 'NAME': 'mysite', //所使用的的数据库的名字 5 'USER': 'root', //数据库服务器的用户 6 'PASSWORD': '123456', //密码 7 'HOST': 'localhost', //主机 8 'PORT': '3306', //端口 9 } 10}

修改完后进入DOS进入项目目录下执行python manage.py shell命令启动交互界面输入一下代码验证数据库配置是否成功。没报错则成功!

>>> from django.db import connection

>>> cursor = connection.cursor()

10.创建模型

在Django中使用数据库布局的第一步是将其表述为Python代码。

文件中每个class相当于单个数据库表,每个属性也是这个表中的一个字段。 属性名就是字段名,它的类型(例如 CharField )相当于数据库的字段类型 (例如 varchar )。

10.1打开test_pr目录下的models.py

1# -*- coding: utf-8 -*- 2from __future__ import unicode_literals 3 4from django.db import models 5 6 7# Create your models here. 8class Student(models.Model): 9 10 name = models.CharField(max_length=20)

字段

11、models.AutoField  自增列= int(11) 2  如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。 32、models.CharField  字符串字段 4  必须 max_length 参数 53.models.DateField  日期类型 date 6  对于参数,auto_now =True则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。 74.models.DateTimeField  日期类型 datetime 8  同DateField的参数 95.models.EmailField  字符串类型(正则表达式邮箱)=varchar 10  对字符串进行正则表达式 116.models.FloatField  浮点类型= double 127.models.IntegerField  整形 138.models.SmallIntegerField  数字 14  数据库中的字段有:tinyint、smallint、int、bigint 159、models.TextField  字符串=longtext 1610、models.TimeField  时间 HH:MM[:ss[.uuuuuu]] 1711、models.URLField  字符串,地址正则表达式 1812、models.BinaryField  二进制 1913、models.ImageField图片 2014、models.FilePathField文件

参数

11null=True 2  数据库中字段是否可以为空 32、blank=True 4  django的Admin中添加数据时是否可允许空值 53、primary_key =False 6  主键,对AutoField设置主键后,就会代替原来的自增 id 列 74、auto_now 和 auto_now_add 8  auto_now 自动创建---无论添加或修改,都是当前操作的时间 9  auto_now_add 自动创建---永远是创建时的时间 105、choices 11GENDER_CHOICE =( 12(u'M', u'Male'), 13(u'F', u'Female'), 14) 15gender = models.CharField(max_length=2,choices = GENDER_CHOICE) 166、max_length 177default  默认值 188、verbose_name  Admin中字段的显示名称 199、name|db_column  数据库中的字段名称 2010、unique=True  不允许重复 2111、db_index =True  数据库索引 2212、editable=True  在Admin里是否可编辑

11. 激活 模型

打开settings.py 文件,找到 INSTALLED_APPS 设置,NSTALLED_APPS 告诉 Django 项目哪些 app 处于激活状态

1INSTALLED_APPS = ( 2 'django.contrib.auth', 3 'django.contrib.contenttypes', 4 'django.contrib.sessions', 5 'django.contrib.sites', 6 'test_pr', 7)

12.将新建的models同步数据库

# Django 1.7 及以上的版本需要用以下命令

-----------------------------------------------------------------------------------------------------------------

步骤里面第一步将会在查询当前MySQL和本地的models的差异,生成合并的代码。

第二步是将合并代码导入数据库。

cmd进入项目目录执行以下命令:

1python manage.py makemigrations 2python manage.py migrate

# Django 1.6.x 及以下

----------------------------------------------------------------------------------------------------------------

用下面的命令对校验模型的有效性:

python manage.py validate

看到 0 errors found 消息,一切正常。继续:

运行下面的命令来生成 CREATE TABLE 语句:

python manage.py sqlall test_pr

sqlall 命令并没有在数据库中真正创建数据表,只是把SQL语句段打印出来。

运行 syncdb 命令创建表

python manage.py syncdb

--------------------------------------------------------------------------------------------------------

所有的数据库查找都遵循一个通用模式:调用模型的管理器来查找数据。

13.models对数据库增删查改

原文:http://python.usyiyi.cn/translate/django_182/ref/models/instances.html

打开models.py文件

方式一:

1from django.db import models 2 3class Student(models.Model): 4 name= models.CharField(max_length=20) 5 6 @classmethod 7 def create(cls, name 8 student = cls(name=name) 9 # do something with the book 10 return student 11 12student = Student.create("zhansan")

方式二(推荐):

1from django.db import models 2 3# Create your models here. 4class Student(models.Model): 5 # 如果没有models.AutoField,默认会创建一个id的自增列 6 name = models.CharField(max_length=20) 7 # model的字符串表现形式 8 def __unicode__(self): 9 return self.name 10 objects = StudentManager() 11 12class StudentManager(models.Manager): 13 14 def create_student(self, name): 15 student = self.create(name=name) 16 # do something with the book 17 return student

原文: https://my.oschina.net/leeyd/blog/367688

增:create()

objects.create(name = 'test') # 新增name字段的值为test

删:delete()

objects.all().delete() # 删除表中全部数据

objects.get(aa='test').delete() # 删除一条aa等于'test'的数据

objects.filter(aa='123').delete() #过滤出aa字段等于123的都删除

改:update()

get(id=id).update(name=name)

查:all()、get()

get(id=id)  # 查询单条数据

filter(name=name) # 查询匹配条件的多条数据

filter(name__contains=name)  # 模糊查询;name为查询的字段名

filter(name__contains=name)[0:5] # [0]显示第一条 [0:2]会显示前两条,切片不支持负数

dome

# models.py

1# -*- coding: utf-8 -*- 2from __future__ import unicode_literals 3 4from django.db import models 5 6 7class StudentManager(models.Manager): 8 9 def create_student(self, name): 10 # 方式一 11 # student = Student(name = name) 12 # # 保存到数据库 13 # student.save() 14 # 方式二(推荐) 15 student = self.create(name=name) 16 return student 17 18 def select_all(self): 19 # 查询全部 20 list = self.all() 21 return list 22 23 def select_one(self, name): 24 # a = [] 25 # # 查询单条数据 26 # student = self.get(id=id) 27 # a.append(student) 28 # return a 29 # 查询匹配条件的多条数据 30 # student = self.filter(name=name) 31 # 模糊查询 32 student = self.filter(name__contains=name) 33 # 根据字段内容排序后展示数据,根据字段内容逆向排序后展示数据,加一个负号order_by('-name') 34 tt = student.order_by('name') 35 36 # 限制数据条数, 相当于mysql limit 37 tt1 = self.filter(name__contains=name)[0:5] # [0]显示第一条 [0:2]会显示前两条,切片不支持负数 38 return tt1 39 40 def updata_student(self, id, name): 41 self.get(id=id).update(name=name) # update可多条update(name=name, bb="wahaha") 42 43# Create your models here. 44class Student(models.Model): 45 46 # 如果没有models.AutoField,默认会创建一个id的自增列 47 name = models.CharField(max_length=20) 48 49 # model的字符串表现形式 50 def __unicode__(self): 51 return self.name 52 53 objects = StudentManager()
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid