一、认证系统

使用django本身自带的认证系统

1、登录admin后台

  1. 先建立一个管理员用户:

  > python manage.py creatsuperuser

  输入用户名、邮箱和密码即可创建一个管理员用户。

  2. 使用超级用户登录系统

  管理员用户登录地址:localhost:8000/admin/。登录后可以创建一个用户

  3. 引用Django的认证登录

  

......
from django.contrib import auth ...... def login_action(request):
if request.method == 'POST':
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request, user)
request.session('user') = username
response = HttpResponseRedirect('/event_manage/')
return response
else:
return render(request, 'index.html', {'error': 'username or password error!'})

二、进行登录认证

直接在地址中输入localhost:8000/event_manage/ 是可以直接进入到登录成功页面的。因此需要加入一个登录认证。

引入login_request函数

views.py

......
from django.contrib.auth.decorators import login_request
...... # 发布会管理
@login_request
def event_manage(request):
username = request.session.get('user', '')
return render(request, 'event_manage.html', {'user': username})

三、Django模型

1、django模型知识

  模型对应系统的一张表,每个模型是一个python类,继承django.db.models.Model类

  该模型的每个属性表示一个数据库表的字段

  

2、打开models.py文件创建模型

models.py

from django.db import models

class Event(models.Model):
name = models.CharField(max_length=200)
limit = models.IntergerField()
status = models.BooleanField()
address = models.CharField(max_length=200)
start_time = models.DateTimeField('events time')
creat_time = models.DateTimeField(auto_now=True) def __str__(self):
return self.name class Guest(models.Model):
event = models.Foreignkey(Event)
realname = models.CharField(max_length=60)
phone = models.CharField(max_length=16)
email = models.EmailField()
sign = models.BooleanField()
create_time = models.DateTimeField(auto_now=True) class Meta:
unique_together = ("event", "phone") def __str__(self):
return self.realname

3、需要进行数据迁移

>pthon manage.py makemigrations sign

>python manage.py migrate

4、通过Admin后台管理数据 

from django.contrib import admin
from sign.models import Event, Guest admin.site.register(Event)
admin.site.register(Guest)

  通过上面的代码“注册”后,admin后台将会有Event和Guest的数据项。添加一条记录可以看到默认显示的是name和realname,这是因为我们在类Event和Guest的__str__中返回的是name和realname。

5、显示更多的字段

from django.contrib import admin
from sign.models import Event, Guest class EventAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'status', 'address', 'start_time'] # 添加的字段
search_fields = ['name'] # 搜索栏
list_filter = ['status'] # 过滤器 class GuestAdmin(admin.ModelAdmin):
list_display = ['realname', 'phone', 'email', 'sign', 'create_time', 'event']
search_fields = ['realname', 'phone'] # 搜索栏
list_filter = ['sign'] admin.site.register(Event, EventAdmin)
admin.site.register(Guest, GuestAdmin)

  django提供了大量的自定义模块工具,这些选项在ModelAdmin类中,所以需要创建一个类来继承admin.ModelAdmin类。选项如:list_display,search_fields,list_fielder等

  最后使用新建的类来分别注册Event和Guest。

6、数据库切换

  本身系统默认支持的是sqlite数据库,现在使用mysql数据库也是可以的。

  修改对应的配置文件之后,再进行数据迁移即可以进行数据库的切换。

  1.创建一个名为guest的数据库

  2.修改配置文件setting.py

DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': '3306',
'NAME': 'guest',
'USER': 'root',
'PASSWORD': '123456',
'OPTIONS': {
'init_command': "SET default_storage_engine=INNODB;",
},
}
}

  3.进行数据迁移

> python manage.py migrate

  PS:如果遇到出现 1193, "Unknown system variable 'storage_engine'" 的报错,那是因为mysql5.7版本以上需要改配置文件,将OPTION项改为"OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"}

《Web接口开发与自动化测试》学习笔记(三)的更多相关文章

  1. Java学习笔记三十一:Java 包(package)

    Java 包(package) 一:包的作用: 如果我们在使用eclipse等工具创建Java工程的时候,经常会创建包,那么,这个包是什么呢. 为了更好地组织类,Java 提供了包机制,用于区别类名的 ...

  2. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  3. Java学习笔记三:Java的变量、常量、变量的类型及使用规则

    Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...

  4. Java学习笔记三.2

    5.继承 //Java中所有对象都显式/隐式的继承子Object类 class fu{ fu(){ System.out.println("fu..."+getNum()); sh ...

  5. Java学习笔记三——数据类型

    前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...

  6. Java学习笔记三---unable to launch

    环境配置好后,在eclipse下编写HelloWorld程序: ①创建新工程 ②创建.java文件,命名为HelloWorld ③在源文件中添加main方法,代码如下: public void mai ...

  7. Java 学习笔记 (三) Java 日期类型

    以下内容摘自:  https://www.cnblogs.com/crazylqy/p/4172324.html import java.sql.Timestamp; import java.text ...

  8. Java学习笔记三:运算符

    1.算术运算符: GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/OperPrac01.java +  -  *  /  ...

  9. Java学习笔记三.3

    9.异常处理:Java中的异常处理对象就是将以前的if语句进行的判断进行抽象化,并形成的一套错误处理体系.最顶端是Throwable,接着是Error,Exception,其中Exception又明显 ...

  10. Java学习笔记三

    1.面向过程思想,强调的是过程(即动作,函数):面向对象思想,强调的是对象. 2.类与对象关系:类是对事物的描述(属性和行为-方法),对象是类的实例.对象通过new生成.属性也称成员变量;方法也称成员 ...

随机推荐

  1. 《C++primerplus》第9章练习题

    1.(未使用原书例题)练习多文件组织.在一个头文件中定义一种学生的结构体,存储姓名和年龄,声明三个函数分别用于询问有多少个学生,输入学生的信息和展示学生的信息.在另一个源文件中给出所有函数的定义.在主 ...

  2. ElasticSearch 索引 VS MySQL 索引

    前言 这段时间在维护产品的搜索功能,每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的. 这甚至比在我本地使用 MySQL 通过主键的查询速度还快. 为此我搜索了 ...

  3. Linux配置Docker

    Centos6.8 1.查看自己的内核 [1].uname [root@host79 ~]# uname -r 2.6.32-642.el6.x86_64 [2].查看CentOS版本信息 CentO ...

  4. 解决mvn clean install的报错The packaging for this project did not assign a file to the build artifact

    解决mvn clean install的报错The packaging for this project did not assign a file to the build artifact

  5. vue 异步提交php 两种方式传值

    1.首先要在php的入口文件写上一条代码,允许异步提交 header("ACCESS-CONTROL-ALLOW-ORIGIN:*"); 2.在vue有两种方式将数据异步提交到ph ...

  6. Flink深入浅出: 资源管理(v1.11)

    -- 图片来自 <国家地理中文网>-- 往期推荐: Flink深入浅出:部署模式 Flink深入浅出:内存模型 Flink深入浅出:JDBC Source从理论到实战 Flink深入浅出: ...

  7. Python基础笔记1-Python读写yaml文件(使用PyYAML库)

    最近在搭建自动化测试项目过程中经常遇到yaml文件的读写,为了方便后续使用,决定记下笔记. 一,YAML 简介 YAML,Yet Another Markup Language的简写,通常用来编写项目 ...

  8. oracle 11g linux 导入中文字符乱码问题解决

    1. 涉及的字符集 这个可以分成三块,数据库服务器字符集(server).实例字符集(instance), 会话字符集(session) 2. 乱码的原因 session 的字符集和 server 的 ...

  9. 推荐几款好用的python编辑器

    1.自带的IDLE:  (1)交互式代码编辑.在>>>提示符后输入python代码,按Enter键就可以显示代码命令执行结果. (2)脚本式代码编辑.选择File菜单里的newFil ...

  10. 用Docker容器安装Jenkins

    先安装Docker 可以参考我的上一篇文章 链接 拉取Jenkins最新镜像,可跟版本号 不跟默认拉取最新镜像 docker pull jenkins/jenkins 创建JenKins的工作目录 m ...