django初级-------创建项目和运行项目

2021/04/07 14:57:36

1. 环境安装

# 虚拟环境
mkvirtualenv  # 创建虚拟环境
rmvirtualenv  # 删除虚拟环境
workon  # 进入虚拟环境、查看所有虚拟环境
deactivate  # 退出虚拟环境
# pip
pip install  # 安装依赖包
pip uninstall  # 卸载依赖包
pip list  # 查看已安装的依赖包
pip freeze  # 冻结当前环境的依赖包

2. django安装

pip install django==2.0.4

3. 创建django项目

创建Django项目

django-admin startproject name

创建子应用

python manager.py startapp name

开启测试服务器

python manage.py runserver或python manage.py runserver ip:端口

可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。

启动后可见如下信息:
在这里插入图片描述
在浏览器中输入网址“127.0.0.1:8000”便可看到效果。

django默认工作在调式Debug模式下,如果增加、修改、删除文件,服务器会自动重启。

按ctrl+c停止服务器。

3.1 django目录结构

- settings.py:整个项目的配置
- urls.py:项目的主路由文件
- wsgi.py:服务器协议文件,接管APP
- manage.py:命令行管理工具

3.2 app目录结构

app1  # startapp创建的app名称

migrations: 保存迁移记录
__init__.py: 声明当前文件夹为一个包
admin.py:admin后台界面管理工具文件
app.py: app单元文件
test.py: 单元测试驱动的 
models.py: 编写ORM
views.py: 视图文件

3.3 django配置

在这里插入图片描述
在这里插入图片描述
用于渲染图片的配置

STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
)

在这里插入图片描述

3.3.1 模板中调用static

在这里插入图片描述

<!DOCTYPE html>
{
   % load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>哈哈</h1>
    <p>sdfsa safasfda</p>

    <img src="{% static '1.png' %}">
</body>
</html>

3.3.2 csrf跨站

在这里插入图片描述
在这里插入图片描述

3.4 向后端发送请求

模拟注册登录

view视图中写函数Register

def Register(request):
    account = request.POST.get("account")
    password = request.POST.get("password")
    print(account,password)

在这里插入图片描述
添加路由

from django.contrib import admin
from django.urls import path
from app1.views import Index,Register

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', Index),
    path('Register/',Register),
]

在这里插入图片描述
前端html写个表单注册登录

<form action="/Register/" method="post">
    {
   % csrf_token %}
    <input type="text"  name="account">
    <input type="text"  name="password">
    <button type="submit">提交</button>
</form>

在这里插入图片描述

3.4.1 settings中没有注释csrf,结果如下

在这里插入图片描述
在页面中提交数据给后端
在这里插入图片描述
在这里插入图片描述
此时要想访问,需要在页面中加入{% csrf_token %},需添加到表单内,否则无效

在这里插入图片描述
在这里插入图片描述
此时在看注册函数中打印的账号密码已经显示出来了
在这里插入图片描述

3.4.2 settings中注释掉csrf,结果如下

在这里插入图片描述
此时任何用户都可进行表单提交
在这里插入图片描述
在这里插入图片描述

3.5 django中的模型

因为这里需要连接数据库,所以还需要在settings中配置

DATABASES = {
   
    'default': {
   
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '', # 使用的数据库名,
        'USER': '',     # 用户名
        'PASSWORD': '',     # 密码
        'HOST': '',         # 数据库主机地址
        'PORT': '',         # 端口号
    }
}

在这里插入图片描述
库名及其他信息需要填,如果不填会报错:
在这里插入图片描述

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app1',
]

在这里插入图片描述
数据库配置完成后需要在django项目__inti__.py中添加以下代码
import pymysql
pymysql.install_as_MySQLdb()
在这里插入图片描述
如果不加会报错,信息如下:
在这里插入图片描述
在子应用中的model里创建一个表

class User(models.Model):
    account = models.CharField(max_length=50)
    password = models.CharField(max_length=50)

在这里插入图片描述
此时就可以进行数据库迁移了,命令如下:

python manage.py makemigrations
在这里插入图片描述
python manage.py migrate
在这里插入图片描述
迁移成功,在Navicat中查看,如下:
在这里插入图片描述
如果你使用的不是mysql,而是django自带的sqllite数据库,那么你可以创建一个超级管理员用户,命令如下:

python manage.py createsuperuser

执行后邮箱可以不输,只需要输入用户名,密码,确认密码即可

3.6 view视图中操作数据库

在注册函数中获取数据库中的账号密码,并对前端传入的账号密码进行校验

def Register(request):
    account = request.POST.get("account")
    password = request.POST.get("password")
    # print(account,password)
    try:
        user = models.User.objects.get(account=account,password=password)
    except:
        return HttpResponse("校验失败")
    else:
        return HttpResponse("成功了")

在这里插入图片描述
此时就可以在前端进行输入账号密码来操作了

首先在Navicat中先添加一条数据
在这里插入图片描述
接着将django项目跑起来,并在前端页面输入正确的账号密码
在这里插入图片描述
在这里插入图片描述
输入错误的账号或密码,结果如下:
在这里插入图片描述
在这里插入图片描述