您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

python+django搭建web项目

时间:2019-11-12 11:08:38  来源:  作者:



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文件,输入以下内容

from django.http import HttpResponse

def sayHello(request):

s = 'Hello World!'

current_time = datetime.datetime.now()

html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time)

return HttpResponse(html)

7url映射的配置

打开url.py文件

from django.conf.urls import url

from test_pr import views

urlpatterns = [

# url(r'^admin/', admin.site.urls),

url(r'^$', views.sayHello),

]

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

8逻辑和页面分离

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

<!DOCTYPE html>

<html>

<head>

<title>hello</title>

</head>

<body>

<ul>

{% for student in students %}

<li>

id:{{ student.id }},姓名:{{ student.name }},age: {{ student.age }}

</li>

{% endfor %}

</ul>

</body>

</html>

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

def showStudents(request):

list = [{id: 1, 'name': 'Jack'}, {id: 2, 'name': 'Rose'}]

return render_to_response('student.html',{'students': list})

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

from django.conf.urls import url

from test_pr import views

urlpatterns = [

# url(r'^admin/', admin.site.urls),

url(r'^$', views.sayHello),

url(r'^showStudents$', showStudents),

]

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

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [BASE_DIR+"/templates", ],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},

]

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文件编写代码

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql', //数据库的类型

'NAME': 'mysite', //所使用的的数据库的名字

'USER': 'root', //数据库服务器的用户

'PASSword': '123456', //密码

'HOST': 'localhost', //主机

'PORT': '3306', //端口

}

}

修改完后进入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

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from django.db import models

# Create your models here.

class Student(models.Model):

name = models.CharField(max_length=20)

字段

1、models.AutoField  自增列= int(11)

  如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。

2、models.CharField  字符串字段

  必须 max_length 参数

3.models.DateField  日期类型 date

  对于参数,auto_now =True则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。

4.models.DateTimeField  日期类型 datetime

  同DateField的参数

5.models.EmailField  字符串类型(正则表达式邮箱)=varchar

  对字符串进行正则表达式

6.models.FloatField  浮点类型= double

7.models.IntegerField  整形

8.models.SmallIntegerField  数字

  数据库中的字段有:tinyint、smallint、int、bigint

9、models.TextField  字符串=longtext

10、models.TimeField  时间 HH:MM[:ss[.uuuuuu]]

11、models.URLField  字符串,地址正则表达式

12、models.BinaryField  二进制

13、models.ImageField图片

14、models.FilePathField文件

参数

1、null=True

  数据库中字段是否可以为空

2、blank=True

  django的Admin中添加数据时是否可允许空值

3、primary_key =False

  主键,对AutoField设置主键后,就会代替原来的自增 id 列

4、auto_now 和 auto_now_add

  auto_now 自动创建---无论添加或修改,都是当前操作的时间

  auto_now_add 自动创建---永远是创建时的时间

5、choices

GENDER_CHOICE =(

(u'M', u'Male'),

(u'F', u'Female'),

)

gender = models.CharField(max_length=2,choices = GENDER_CHOICE)

6、max_length

7、default  默认值

8、verbose_name  Admin中字段的显示名称

9、name|db_column  数据库中的字段名称

10、unique=True  不允许重复

11、db_index =True  数据库索引

12、editable=True  在Admin里是否可编辑

11. 激活 模型

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

INSTALLED_APPS = (

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.sites',

'test_pr',

)

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

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

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

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

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

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

python manage.py makemigrations

python 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文件

方式一:

from django.db import models

class Student(models.Model):

name= models.CharField(max_length=20)

@classmethod

def create(cls, name

student = cls(name=name)

# do something with the book

return student

student = Student.create("zhansan")

方式二(推荐):

from django.db import models

# Create your models here.

class Student(models.Model):

# 如果没有models.AutoField,默认会创建一个id的自增列

name = models.CharField(max_length=20)

# model的字符串表现形式

def __unicode__(self):

return self.name

objects = StudentManager()

class StudentManager(models.Manager):

def create_student(self, name):

student = self.create(name=name)

# do something with the book

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

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from django.db import models

class StudentManager(models.Manager):

def create_student(self, name):

# 方式一

# student = Student(name = name)

# # 保存到数据库

# student.save()

# 方式二(推荐)

student = self.create(name=name)

return student

def select_all(self):

# 查询全部

list = self.all()

return list

def select_one(self, name):

# a = []

# # 查询单条数据

# student = self.get(id=id)

# a.append(student)

# return a

# 查询匹配条件的多条数据

# student = self.filter(name=name)

# 模糊查询

student = self.filter(name__contains=name)

# 根据字段内容排序后展示数据,根据字段内容逆向排序后展示数据,加一个负号order_by('-name')

tt = student.order_by('name')

# 限制数据条数, 相当于mysql limit

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

return tt1

def updata_student(self, id, name):

self.get(id=id).update(name=name) # update可多条update(name=name, bb="wahaha")

# Create your models here.

class Student(models.Model):

# 如果没有models.AutoField,默认会创建一个id的自增列

name = models.CharField(max_length=20)

# model的字符串表现形式

def __unicode__(self):

return self.name

objects = StudentManager()



Tags:python django   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、DTL讲解:1、DTL模板是一种带有特殊语法的HTML文件,这个HTML文件可以被Django编译,可以传递参数进去,实现数据动态化。在编译完成后,生成一个普通的HTML文件,然后发送给客户端...【详细内容】
2020-05-07  Tags: python django  点击:(43)  评论:(0)  加入收藏
1创建web服务器:使用cmd命令进入到存放项目的目录中执行以下命令:python django-admin.py startproject mysite成功后会在目录中出现 mysite 目录,此处创建的为开发服务器2创...【详细内容】
2019-11-12  Tags: python django  点击:(70)  评论:(0)  加入收藏
▌简易百科推荐
大家好,我是菜鸟哥,今天跟大家一起聊一下Python4的话题! 从2020年的1月1号开始,Python官方正式的停止了对于Python2的维护。Python也正式的进入了Python3的时代。而随着时间的...【详细内容】
2021-12-28  菜鸟学python    Tags:Python4   点击:(1)  评论:(0)  加入收藏
学习Python的初衷是因为它的实践的便捷性,几乎计算机上能完成的各种操作都能在Python上找到解决途径。平时工作需要在线学习。而在线学习的复杂性经常让人抓狂。费时费力且效...【详细内容】
2021-12-28  风度翩翩的Python    Tags:Python   点击:(1)  评论:(0)  加入收藏
Python 是一个很棒的语言。它是世界上发展最快的编程语言之一。它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性。整个 Python 及其库的生态系统使...【详细内容】
2021-12-27  IT资料库    Tags:Python 库   点击:(2)  评论:(0)  加入收藏
菜单驱动程序简介菜单驱动程序是通过显示选项列表从用户那里获取输入并允许用户从选项列表中选择输入的程序。菜单驱动程序的一个简单示例是 ATM(自动取款机)。在交易的情况下...【详细内容】
2021-12-27  子冉爱python    Tags:Python   点击:(4)  评论:(0)  加入收藏
有不少同学学完Python后仍然很难将其灵活运用。我整理15个Python入门的小程序。在实践中应用Python会有事半功倍的效果。01 实现二元二次函数实现数学里的二元二次函数:f(x,...【详细内容】
2021-12-22  程序汪小成    Tags:Python入门   点击:(32)  评论:(0)  加入收藏
Verilog是由一个个module组成的,下面是其中一个module在网表中的样子,我只需要提取module名字、实例化关系。module rst_filter ( ...); 端口声明... wire定义......【详细内容】
2021-12-22  编程啊青    Tags:Verilog   点击:(9)  评论:(0)  加入收藏
运行环境 如何从 MP4 视频中提取帧 将帧变成 GIF 创建 MP4 到 GIF GUI ...【详细内容】
2021-12-22  修道猿    Tags:Python   点击:(6)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  我头秃了    Tags:python   点击:(9)  评论:(0)  加入收藏
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常...【详细内容】
2021-12-21  程序员小新ds    Tags:python初   点击:(5)  评论:(0)  加入收藏
Hi,大家好。我们在接口自动化测试项目中,有时候需要一些加密。今天给大伙介绍Python实现各种 加密 ,接口加解密再也不愁。目录一、项目加解密需求分析六、Python加密库PyCrypto...【详细内容】
2021-12-21  Python可乐    Tags:Python   点击:(8)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条