-
1.创建项目
打开某个目录,进入。
“C:\Users\梁瑾怡\PycharmProjects\pythonProject\venv\Scripts django-admin.exe” + startproject 项目名称
如果在环境变量里面的话
django-admin startproject +项目名 :比较标准也可以如下这样创建项目
会加点东西:
多了一个template目录,直接删除掉
setting文件,多加了一组数据
57行【os.path.join[BASE_DIR,‘template’]】删除掉
- 2
manage.py 【项目管理,启动项目,创建app,数据库的管理,常常用】
asgi.py 【接受网络请求,不要动】
wsigi.py 【接受网络请求,不要动】
urls.py 【全部的路径,和函数的对应关系,常常操作的文件】
settings.py 【项目配置,常常操作的文件】
- 3.APP
项目
app 用户管理 【表结构,html,css】
app 订单管理
app 后台管理
app 网站
创建一个app
.\manage.py startapp app01
D:.
│ manage.py
│
├─app01
│ │ admin.py【django提供admin后台管理,不用动】
│ │ apps.py [固定不用动]
│ │ models.py【**重要**】对数据库操作
│ │ tests.py 【单元测试不用动】
│ │ views.py 【**重要**】一调用url中,就会触发这个py.属于视图函数。
│ │ __init__.py
│ │
│ └─migrations 【数据库变更记录不用动】
│ __init__.py
│
└─mysite
│ asgi.py
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
└─__pycache__
settings.cpython-38.pyc
__init__.cpython-38.pyc
4.快速上手
- 确保app已注册
settings
加入这句话
编写URL和视图函数的对应关系【urls.py】
有一个bug,必须这样写,哪怕有红线呢,其实这样运行结果没问题的。
编写视图【view.py】
启动项目
python manage.py runserver 8000
点击这个网页,就可以查看的。http://127.0.0.1:8000/index/
4.1页面
url ----view,里面一个网址对应一个函数
4.2 templates
4.3 静态文件
在开发过程中,一定要新建这几个包。
4.5
模板语法
直接使用{{}}来进行
案例:伪联通消息中心
4.6 请求与响应
案例:用户登录
出现403报错
403 Forbidden. CSRF token missing or incorrect
在返回页面的views的方法上添加一个
@csrf_exempt 往后看,不一定的
并且导入模块
from django.views.decorators.csrf import csrf_exempt
然后页面去掉 {% csrf_token %} 就能正常使用
原文链接:https://blog.csdn.net/weixin_41782332/article/details/81140172
表单的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>用户登陆</h1>
<form method="post" action="/login/">
<input type="text" name="user" placeholder="用户名">
<input type="password" name="pwd" placeholder="密码">
<input type="submit" value="提交">
<span style="color:red;">{{ error_msg }}</span>
</form>
</body>
</html>
样子如下
逻辑代码
@csrf_exempt 必须放到这个函数上,不然没有效果
def login(request):
if request.method == "GET":
return render(request, "login.html")
# return HttpResponse("登陆成功")
username = request.POST.get("user")
password = request.POST.get("pwd")
if username == '123' and password == "123":
# return HttpResponse("登陆成功")
return redirect("https://www.hao123.com")
# # return HttpResponse("登陆失败")
return render(request, 'login.html',{"error_msg":"用户名或密码错误"})
逻辑描述:
1.打开登录界面,输入账号密码
2.如果正确,重定向
3.不正确,在原有的html上传入error_msg,渲染后才显示出来。
- 7.数据库操作
django开发操作数据库更简单,内部提供了ORM框架。
ORM如何对数据库进行增删改查
7.1 安装第三方模块
pip install mysqlclient
7.2 ORM能做的事情
创建,修改,删除数据库中的表
操作表中的数据
7.3 自己创建数据库
切记 切记 切记 cmd 打开是以管理员身份打开的
net start mysql80
mysql -h 127.0.0.1 -uroot -p123456
7.4 django连接数据库
在settings.py文件中进行配置和修改。
DATABASES = {
'default': {
# 说明你要连的库为mysql
'ENGINE': 'django.db.backends.mysql',
# 数据库名称
'NAME': 'student',
# IP 本地为127.0.0.1
'HOST': '127.0.0.1',
# 端口默认是3306 oracel默认端口1521
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123456'
}
}
7.5 django操作表
在models中来创建表
from django.db import models
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
创建表的名字需要注意一下
列会自动多了个id,表名:app名字_类名(小写)
执行命令(当前目录必须是根目录,才能找到manage.py)
python manage.py makemigrations
python manage.py migrate
app一定要提前注册,没有注册,表不会提交到数据库。
mysql的查看
C:\windows\system32>net start mysql
服务名无效。
请键入 NET HELPMSG 2185 以获得更多的帮助。
C:\windows\system32>mysql admin -V
mysql Ver 8.0.20 for Win64 on x86_64 (MySQL Community Server - GPL)
C:\windows\system32>net start mysql
服务名无效。
请键入 NET HELPMSG 2185 以获得更多的帮助。
C:\windows\system32>services.msc
C:\windows\system32>**net start mysql80**
请求的服务已经启动。
请键入 NET HELPMSG 2182 以获得更多的帮助。
C:\windows\system32>**mysql -h 127.0.0.1 -uroot -p123456**
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.20 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
create database student; 建库
show databases; 查看库
use student; 进入student表
show tables; 显示
desc app01_userinfo; 查看 app01_userinfo表
删除列没差,但是增加列有讲究
删除表,就是注释后在进行提交就删掉了。
删除列,就是注释后,再提交就删掉了。
!!!修改表一定要注意下,增加列的时候,一定要对列里面的内容进行设置。
不然很容易进行报错的。
增加列,会对之前未填补的空白进行处理,两种处理方法
from django.db import models
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
# 表建好后,再加如列,新增列需要对应的数据。
data = models.IntegerField(null=True,black=True) # 一种是默认为空
age = models.IntegerField(default=2) # 一种是默认为2
7.6 django操作表中的数据
案例:用户管理
展示用户列表
记得引入
from app01.models import UserInfo
添加数据库
遇到问题,先看注释,根据注释来检查代码的问题。
这个错误提示是,没有返回的return。
在user/list/上添加一个小按钮
删除用户
http://127.0.0.1:8000/info/delete/?nid=1
http://127.0.0.1:8000/info/delete/?nid=2
http://127.0.0.1:8000/info/delete/?nid=3
def 函数(request):
nid = request.GET.get("nid")
UserInfo.object.filter(id=nid).delete()