当通过post方式提交表单数据时,会有cssrf禁止访问的问题.需要在settings配置文件里注释掉
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] Django项目下分多个子项目,每个app就是独立一个项目.
### cmd命令行创建app(在具有manage.py文件,进入cmd), # 语法: python manage.py startapp app名字 例:python manage.py startapp app01 #PS: 在cmd命令行中可以创建多个app项目 , 必须要注册app # 方式一: # 1.找到settings文件夹 INSTALLED_APPS INSTALLED_APPS = [ 'django.contrib.admin', 站点管理系统 'django.contrib.auth', 认证系统 'django.contrib.contenttypes', content types框架 'django.contrib.sessions', session框架 'django.contrib.messages', message框架 'django.contrib.staticfiles', 静态文件管理框架 'app01', # 注册app ] # 方式二: # 2.找到settings文件夹 INSTALLED_APPS INSTALLED_APPS = [ 'django.contrib.admin', 站点管理系统 'django.contrib.auth', 认证系统 'django.contrib.contenttypes', content types框架 'django.contrib.sessions', session框架 'django.contrib.messages', message框架 'django.contrib.staticfiles', 静态文件管理框架 'app01.apps.App01Config', # 注册app ] migrations ---> 数据操作记录,只记录修改models.py文件中,表的结构修改记录
admin.py ---> Django默认提供的后台管理
apps.py ---> 当前app项目的配置
models.py ---> ORM,写指定的类,通过命令就可以创建数据库表结构
test.py ---> 单元测试
views.py ---> 所有的业务逻辑
如下图:?
对象关系映射(Object Relational Mapping),此模式是为了解决面向对象与关系数据库存在互相不匹配的现象的技术.
ORM就是描述对象和数据库之间的映射关系.将程序中的对象自动持久化到关系型数据库中.orm在业务逻辑层和数据库之间充当桥梁的作用
1.配置settings文件中的数据库引擎
DATABASES = { "default": { "ENGINE": "django.db.backends.mysql", "NAME": "你的数据库名称", # 需要自己手动创建数据库 "USER": "数据库用户名", "PASSWORD": "数据库密码", "HOST": "数据库IP", "POST": 3306 } }2.在与项目同名的'__ init __.py'文件中,执行数据库连接代码.python2X支持MYSQLDB,python3支持pymysql.(连接数据库的模块很多,在此是只是使用pymysql模块)
# 导入 pymysql import pymysql pymysql.install_as_MySQLdb()3.在app下的models.py文件中,写类
# 使用orm把表和对象的关系产生映射. class User(models.Model): # 必须继承models模块Model. User就是表名 # username表示表中的字段. # models.CharField表示是字符串类型 # max_length表示是宽度 username = models.CharField(max_length=32) # username varchar(32) password = models.CharField(max_length=32) # password varchar(32)4.执行数据迁移命令
# 当前项目下,使用manage.py文件管理,cmd命令行操作 # 所有注册的APP下的models.py文件变更记录, # 记录models.py文件的变更, 会在 migrations文件夹下生成修改的文件,如:0001_initial.py python manage.py makemigrations # 将 migrations文件夹下的0001_initial.py文件同步到数据库中 python manage.py migrate5.简单查询数据
# 使用 get()方法,只能查询一条记录也就是一个object对象 . 查不到/查询多个就会报错 user=request.POST.get('form-username') pwd=request.POST.get('form-password') print(user,pwd) ret=models.UserInfo.objects.get(username=user,password=pwd) # 查询多个的错误,页面错误 # get() returned more than one UserInfo -- it returned 2! # 查询不到的错误,页面错误 # UserInfo matching query does not exist. # 查询到正确的 # UserInfo object <class 'app01.models.UserInfo'> print(ret,type(ret)) # 使用 filter()方法,查询的是一个对象列表.QuerySet ret=models.UserInfo.objects.filter(username=user,password=pwd) # 对象列表 print(ret,type(ret)) #<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>]> <class 'django.db.models.query.QuerySet'>小福利:免费模版网站点我
转载于:https://www.cnblogs.com/dengl/p/11396725.html
相关资源:JAVA上百实例源码以及开源项目