Django项目流程

本文详细介绍了Django项目的创建流程,包括创建项目、配置修改、数据库安装、模型编写、迁移操作、超级用户创建及数据添加、视图代码编写和路由配置。在视图层中,讨论了GET和POST请求的处理,并提供了解决CSRF问题的两种方法。
摘要由CSDN通过智能技术生成

一、Django项目流程

1.创建django项目

打开指定文件夹,在路径位置输入cmd打开命令行

创建django项目: django-admin startproject 项目名

创建子应用: python .\manage.py startapp 子应用名

启动项目 python manage.py runserver

2.修改配置信息

# 注册子应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'myapp',  # 注册子应用
]

# 修改模板相关配置
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 配置模板路径,需要自己创建文件
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

# 配置数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 使用mysql数据库
        'HOST': 'localhost',  # 主机
        'PORT': 3306,  # 端口
        'USER': 'root',  # 数据库的用户名
        'PASSWORD': 'root',  # 数据库的密码
        'NAME': 'test',  # 数据库的名字
    }
}

# 语言和时区
LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

# 配置静态资源(没用到)
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]  # 配置路径,需要自己创建文件夹
常用sql代码回顾:
查看所有数据库: show databases;
创建数据库: create database 数据名 charset=utf8;
删除数据库: drop database 数据库名;
调用数据库: use 数据库名;
查看数据库下的所有表: show tables;
查看表结构: desc 表名;
查看表中的所有数据: select * from 表名;

3.安装数据库

在与项目同名的文件夹下有一个init.py文件,添加代码:

import pymysql
pymysql.install_as_MySQLdb()

4.编写模型类

from django.db import models

# Create your models here.
# 模型类 会自动生成 id字段
class Game(models.Model):
    # CharField 字符串 max_length 最大长度 verbose_name 后台管理的字段名
    name = models.CharField(max_length=20, verbose_name='角色名')
    # IntegerField 整型
    atk = models.IntegerField(verbose_name='攻击力')
    level = models.IntegerField(verbose_name='等级')

5.迁移

1.生成迁移文件:python manage.py makemigrations

2.执行前移:python manage.py migrate

注意: 迁移出错,需要把数据库删了创建干净的数据库,迁移文件删了,重新执行上面2个步骤

6.创建超级用户并添加数据

1.创建超级用户:python manage.py createsuperuser

2.在子应用的admin.py文件中添加代码,注册表,不然admin控制台没办法管理这个表

from django.contrib import admin
from myapp.models import Game
# Register your models here.
admin.site.register(Game)

3.运行项目,在admin页面添加数据

7.视图代码编写

from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Game
# Create your views here.

# 视图函数
def MyView(request):
    # 3.MVT三层联动
    # 通过Game模型类,取出数据块中的数据(ORM操作),取出所有角色信息
    game_data = Game.objects.all()
    content = {  # 传递给页面的数据,字典
        'games': game_data,
    }
    # render返回一个模板页面
    return render(request, 'index2.html', content)


# def MyView(request):
#     # 1.返回一个相应
#     return HttpResponse('<h1>这是我的第一个视图</h1>')
#
#     # 2.返回一个模板页面,并传递了一些数据
#     content = {  # 传递给页面的数据,格式是字典
#         'money': 100,
#         'scores': [100, 99, 95, 80, 85],
#         'game': {
#             'name': '龙傲天',
#             'atk': '999',
#             'def': '10',
#             'level': '18',
#         }
#     }
#     return render(request, 'index.html', content)

8.配置路由

from django.contrib import admin
from django.urls import path
from myapp import views

# 主路由
urlpatterns = [
    path('admin/', admin.site.urls),
    path('myview/', views.MyView),
]

二、视图层

1.GET请求处理

解析get请求中的query参数127.0.0.1:8000/myview/?page=10&id=1001

# 解析GET请求
def MyView(request):
    page = request.GET.get('page')
    id = request.GET.get('id')
    return HttpResponse(f"这是第一个视图,当前页数为{page},当前id为{id}")

2.POST请求处理

编写表单页面,在表单中发送post请求提交数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>表单页面</h3>
    <form method="post" action="/myview2/">
        {% csrf_token %}
        账号: <input type="text" name="user">
        密码: <input type="password" name="pwd">
        <input type="submit" value="提交">
    </form>
</body>
</html>
# 解析POST请求
def MyView2(request):
    user = request.POST.get('user')
    pwd = request.POST.get('pwd')
    return HttpResponse(f"这是第二个视图,账号:{user},密码:{pwd}")

解决CSRF问题的2种方法:

1.注释中间件中与CSRF相关的中间件

2.在表单中加上{% csrf_token %}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值