打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python+django搭建web项目

转载自https://blog.csdn.net/xm_csdn/article/details/74419683

 

 

创建项目

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

 

 
  1. from django.http import HttpResponse

  2.  
  3.  
  4. def 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文件

 

 
  1. from django.conf.urls import url

  2. from test_pr import views

  3.  
  4. urlpatterns = [

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

 

 

 
  1. from django.conf.urls import url

  2. from test_pr import views

  3.  
  4. urlpatterns = [

  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'],

 

 
  1. TEMPLATES = [

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

 

 
  1. DATABASES = {

  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 -*-

  2. from __future__ import unicode_literals

  3.  
  4. from django.db import models

  5.  
  6.  
  7. # Create your models here.

  8. class Student(models.Model):

  9.  
  10. name = models.CharField(max_length=20)

 

 

字段

 

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

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

  3. 2、models.CharField  字符串字段

  4.   必须 max_length 参数

  5. 3.models.DateField  日期类型 date

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

  7. 4.models.DateTimeField  日期类型 datetime

  8.   同DateField的参数

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

  10.   对字符串进行正则表达式

  11. 6.models.FloatField  浮点类型= double

  12. 7.models.IntegerField  整形

  13. 8.models.SmallIntegerField  数字

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

  15. 9、models.TextField  字符串=longtext

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

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

  18. 12、models.BinaryField  二进制

  19. 13、models.ImageField图片

  20. 14、models.FilePathField文件

  21.  
  22.  
  23.  


参数

 

 

 

 
  1. 1、null=True

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

  3. 2、blank=True

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

  5. 3、primary_key =False

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

  7. 4、auto_now 和 auto_now_add

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

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

  10. 5、choices

  11. GENDER_CHOICE =(

  12. (u'M', u'Male'),

  13. (u'F', u'Female'),

  14. )

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

  16. 6、max_length

  17. 7、default  默认值

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

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

  20. 10、unique=True  不允许重复

  21. 11、db_index =True  数据库索引

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


11. 激活 模型

 

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

 

 
  1. INSTALLED_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进入项目目录执行以下命令:

 

 
  1. python manage.py makemigrations

  2. 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文件

方式一:

 

 
  1. from django.db import models

  2.  
  3. class 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.  
  12. student = Student.create("zhansan")


方式二(推荐):

 

 
  1. from django.db import models

  2.  
  3. # Create your models here.

  4. class 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.  
  12. class 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 -*-

  2. from __future__ import unicode_literals

  3.  
  4. from django.db import models

  5.  
  6.  
  7. class 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.

  44. class 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()

  54.  

 

错误:

Python3:Django连接Mysql数据库时出错,'Did you install mysqlclient or MySQL-python?'

一、原因

因为Python版本问题,MySQLdb只能在python2中用,在python3中,已经淘汰,不能使用了。

二、解决方案

下载安装pymysql,然后

在django项目中根目录下的__init__.py文件中添加两行代码即可。

假如是开发对应的子模块模型,那么在对应模型目录下的__init__.py文件中添加两行代码即可。

import pymysql pymysql.install_as_MySQLdb()

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
小技巧 | 聊聊 Python 中数据库反向生成 Model 最优方案
python测试开发django-35.xadmin注册表信息
Django 模型类ForeignKey 选项参数
模型(Models)和管理后台(Admin site)
Django的Migrate和Makemigrations讲解
探索Django模型,了解如何简化数据管理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服