《Python web接口开发与测试》摘记

【因自己电脑装了python2 和python3 所以后者用python3命令指代】

pip install django==1.9.7

目前最新版本: pip install Django==2.0.5

创建项目dj_project 目录下执行 django-admin startproject dj_project

《Python web接口开发与测试》摘记

《Python web接口开发与测试》摘记

mange.py: 命令行工具,可以让你在使用Django项目是以不同的方式进行交互。可以通过python manage.py查看

接下来通过 startapp 创建应用

python3 manage.py startapp dj

《Python web接口开发与测试》摘记

《Python web接口开发与测试》摘记

Django提供了web容器,只需要通过 runserver 即可吧项目运行起来

python3 manage.py runserver

结果如下

《Python web接口开发与测试》摘记

默认端口8000,也可以指定IP和端口

python3 manage.py runserver 127.0.0.1:8001

《Python web接口开发与测试》摘记

期间添加模板的时候报了一个错django.template.exceptions.TemplateDoesNotExist: index.html,通过修改

settings.py文件修复。

《Python web接口开发与测试》摘记

《Python web接口开发与测试》摘记

《Python web接口开发与测试》摘记

《Python web接口开发与测试》摘记

“跨站请求伪造”(CSRF)漏洞。Django针对CSRF的保护措施是在生成的每个表单中放置一个自动生成的令牌,通过这个令牌判断POST请求是否来自同一个网站

在form表单中添加{% csrf_token %}

在使用session存储信息时,一直报 'WSGIRequest' object has no attribute 错误。百度得知1.10版本之前使用MIDDLEWARE_CLASSES配置,1.10之后的使用MIDDLEWARE配置(猝不及防的坑)

《Python web接口开发与测试》摘记

Django自动生成数据库配置。settings.py文件中

# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

在执行migrate命令时,Django也帮我们生成了auth_user表,地址:http://127.0.0.1:8000/admin来访问Django自带的Admain管理后台

首先需要创建登录Admain后台的账号

《Python web接口开发与测试》摘记

登录: admin/admin1234

《Python web接口开发与测试》摘记

Add新增用户。添加用户之后,需要给用户分组,并授予权限才能登陆成功。

引用Django认证登录


username = auth.authenticate(username=user, password=passwd)  # 
if username is not None:
    auth.login(request, username)   # 登录

限制访问:只能通过登录访问系统

《Python web接口开发与测试》摘记

当再次直接输入event_manage的url时,

《Python web接口开发与测试》摘记

404 Not found。并且跳转到/accounts/login/,限制需要让它跳转到登录页面

urls.py增加重定向:

url(r"^accounts/login/$",views.index),

《Python web接口开发与测试》摘记

在models.py添加表的信息

from django.db import models

# Create your models here.
# 发布会表
class Event(models.Model):
    name = models.CharField(max_length=100)     # 发布会标题
    limit = models.IntegerField()               # 参加人数
    status = models.BooleanField()              # 状态
    address = models.CharField(max_length=200)  # 地址
    start_time = models.DateTimeField('events time')    # 发布会时间
    create_time = models.DateTimeField(auto_now=True)   # 创建时间(自动获取当前时间)

    def __str__(self):
        return self.name

# 嘉宾表
class Guest(models.Model):
    event = models.ForeignKey(Event)        # 关联发布会 id
    realname = models.CharField(max_length=64)      # 姓名
    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

数据库迁移(没懂)

《Python web接口开发与测试》摘记

《Python web接口开发与测试》摘记

然后在admin.py中注册表

from django.contrib import admin
from dj.models import Event, Guest

# Register your models here.
admin.site.register(Event)
admin.site.register(Guest)

重新登录Admin后台管理平台

《Python web接口开发与测试》摘记

《Python web接口开发与测试》摘记

python3 manage.py shell命令安装shell,模拟数据库表的操作,包括插入数据,查看数据,删除数据,更新数据等操作

可视化的SQL管理工具

SQLiteManager:火狐搜索附加组件,安装,重启

《Python web接口开发与测试》摘记

《Python web接口开发与测试》摘记

另一种:SQLiteStudio    下载地址:http://sqlitestudio.pl/

Django用的数据库是Python自带的SQLite3,并不适用于大型的项目。支持其他数据库,如PostgreSQL、MySQL、Oracle的配置

配置步骤省略(因为我电脑之前装过一个mysql,所以导致冲突了,一台电脑可以装多个mysql,教程网上有,我实在没弄出来)

图形界面化管理工具: SQLyog