一.创建
1. django-admin startproject 项目名称
2. 企业版多生成 templates文件与manage.py同级 ,修改settings文件中os.path.join(BASE_DIR).'templates'
3. 命令行生成 标准的
二.配置
1. asgi.py和wsgi.py接收网络请求前者同步后者异步
2. manage.py 【别动】
3. urls.py 【url和函数的对应关系 】[常修改]
4. settings 【项目配置 eg:connect mysql】[常修改]
三.创建APP
1.app app Django特指项目
eg:app 用户管理
app 订单管理
app 后台管理
......
2.创建 manage.py startapp 名字 首先要迁移python manage.py migrate 然后python manage.py startapp app名字 (有问题见附录)
3. url中的函数定义到view.py中
4. models 对数据库进行操作
四.注册app
1. INSTALLED_APPS = ['yourapp.apps.类名',]
2. 编写url和视图函数的对应关系urls.py
3. 编写视图函数 yourapp -> views.py
# 注意 ::::在urls中引用的时候可能需要报错才能通过 python manage.py runserver 运行 ,运行结果需要加上view.py中的东西
五:再写一个页面
1. -url->函数 直接在urls中写
六:templates模板
1. 返回一个html 则 return render(request,'**.html')
如果一.2.被加上了,则直接去根目录下寻找templates中的相应文件 否则是从当前app下templates 寻找
2.静态文件
图片、css、js 放在当前文件目录下新建一个static文件夹
3.{% load static %}
src = " {%static '引入的文件名字' %}"
href = "{% static '引入文件名字'%}"
七:模板语法(django)
1. html中写一些占位符,由数据对这些占位符进行替换和处理
2. 占位符 py name = sz {‘n’:name} html{{n}}
3. 循环拿key 拿values 使用for循环 {% for k,v in 变量名.items%} {{k}} {{v}} {% endfor %} 用.items
4. 条件判断{% if 变量名 == ‘值’%}{% elif %} {%else% } {%endif%}
八、请求和响应
1. 三个请求 request.methods GET,POST 三个响应 return Httpresponse return render request,‘index.html’) 重定向 告诉你去哪然后浏览器直接访问 百度return redirect(“https://www.baidu.com”)
2. 在html中的form 表单中 写入{% csrf_token %} 因为在django中有一个scrf 安全验证
九、正常数据库的操作 (1) 连接mysql
1. import pymql
import pymasql
conn = pymasql.connect(host='',port=3306,user= 'root')
passwd = 'root123',charset = 'utf8',db = 'unicom'
cursor = conn.cursor(cursor = pymql.cursore.DictCurrsor)
ddl操作 等同sqlite
创建表
import pymysql
connection = pymysql.connect(
host='localhost', # 主机名
user='root', # 用户名
password='123456', # 密码
database='two', # 数据库名
)
cursor = connection.cursor()
table_name = 'your_table'
sql = f"CREATE TABLE {table_name} (id INT, name VARCHAR(255))"
cursor.execute(sql)
connection.commit()
cursor.close()
connection.close()
连接数据库前面要求大写
import pymysql
connection = pymysql.connect(
host='localhost', # 主机名
user='root', # 用户名
password='123456', # 密码
name='数据库的名字',
)
cursor = connection.cursor()
sql = "SELECT * FROM your_table"
cursor.execute(sql)
results = cursor.fetchall()
print(results)
insert_sql = "INSERT INTO your_table (id, name) VALUES (%s, %s)"
use_data = (1, "sz")
# 执行插入操作操作
cursor.execute(insert_sql, use_data)
connection.commit()
cursor.close()
connection.close()
九 django设置数据库(2) django 提供一个orm框架pymysql mysqldb mysqlclient
帮助我们翻译 ,使用models.****.all()
创建 修改删除修改表【无法创建数据库,需要使用常规方法事先创建数据库】
操作表中的数据【不用写sql语句】
1.设置数据库settings文件中
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_database_name',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'localhost',
'PORT': 3306,
}
}
将 'your_database_name' 替换为你的数据库名称,'your_username' 替换为你的 MySQL 用户名,'your_password' 替换为你的 MySQL 密码。如果 MySQL 服务器不在本地,请将 'HOST' 参数设置为适当的主机地址,'PORT' 参数设置为适当的端口号。
在项目根目录下运行以下命令来生成数据库迁移文件:
python manage.py makemigrations
使用以下命令来应用数据库迁移:
python manage.py migrate
十 、django 连接数据库【注意orm不会给你创建一个数据库,需要自己去创建一个数据库然后orm操作他】
1. 看九中如何设置
2.django操作表
创建表 删除表 修改表
创建表 在models.py文件中: class UserInfo(models.Model):
# CharField 字符串类型
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
# 整型
age = models.IntegerField()
# 创建表 models在这个yourapp下 所以是yourapp_类名的小写 【是这个表的名字】
# 会自动生成上述类中的变量为列 同时会默认自动增加一个列 :id bigint auto_increment primary key
# '''
# create table yourapp_userinfo(
# id bigint auto_increment primary key,
# name varchar(32),
# password varchar(64),
# age int
# )
# '''
在terminal 执行命令: python manage.py makemigrations python manage.py migrate
3.models创建多表就创建多类 如何限制不空,如何设置主键,新增一个列等问题详见附录3
4.44444444orm
添加数据 models.类.objects.create(name = “鬼才松”,age = ‘19’)
models.类.create(**{“name”:“鬼才松”,‘age’:19})
models.类(name = ‘鬼才松’ , age =‘19’)
4.orm 插入数据:方法名.objects.create(列名=‘你要插入的数据’)【其中objects可能会出现 “Unresolved attribute reference” 错误,并不一定意味着存在实际的问题。Django 的动态属性 objects 可能无法被编辑器直接解析出来。运行时,Django 会确保 objects 属性可用。】
在views 引用这个models文件如果 from app import model 则需要models.方法名.objects.create,【在Django中,创建模型类时,默认情况下会自动生成一个自增的整数型字段作为主键,并将其命名为’id’。这个主键字段会自动递增,并且在插入新记录时会自动生成唯一的主键值。然而,有一种情况下,Django不会自动生成自增主键字段。当你明确地定义了一个字段作为主键时,Django将不会自动生成’id’字段】
5.orm 删除数据views文件下 models.类名.objects.filter().delete() 【filter是加入筛选条件,把他可以换成all()意味着删除全部数据】
6.orm 获取数据models.类名.objects.all()得到的是全部数据而且是queryset类型【详细见附录4】,这里可以默认为是列表[],可以将all()改为filter()添加删选条件。
7.orm 更新数据models.Administer.filter(name='sz').update(password='123456')
十一:用户管理 《1展示用户列表》1. url添加2.然后views添加函数(方法)然后3.创建html文件
《2添加用户》1.url 2.函数->GET 看到的页面,输入内容 ->post 提交
《3.删除用户》1. url 2.函数 注意 需要加上?然后id=几不然会报错
http://127.0.0.1:8000/info/delete/?nid=1
def 函数(request):
nid = request.GET.get(“nid”)
userinfo.objects.filter(id=nid).delete()
return Httpsponse("删除成功“)
十二:新建用户
1.原始方法的思路(本质)不会使用(麻烦)
2.django组件
Form组件和modelform组件(后者比前者要高级)
附录:
1.
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。
安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows
PS C:\WINDOWS\system32> Set-ExecutionPolicy Unrestricted
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): Y
PS C:\WINDOWS\system32> powershell -ExecutionPolicy Bypass -File E:\python练习\python1\Scripts\activate.ps1
PS C:\WINDOWS\system32>
2.
在家庭版中,你可以手动创建应用程序文件夹和必要的文件。按照以下步骤进行操作:
在你的 Django 项目根目录下,创建一个名为 “yourapp” 的文件夹,其中 “yourapp” 是你想要创建的应用程序的名称。
在 “yourapp” 文件夹内,创建一个名为 “models.py” 的文件,用于定义你的应用程序的数据模型。
如果需要,你还可以创建一个名为 “views.py” 的文件,用于定义视图函数。
在项目的根目录下的 “settings.py” 文件中,将你的应用程序添加到 “INSTALLED_APPS” 列表中。只需在列表的末尾添加 “yourapp”,例如:
INSTALLED_APPS = [
...
'yourapp',
]
运行与你的 Django 版本兼容的数据库迁移命令,例如:python manage.py makemigrations 和 python manage.py migrate,确保你的数据库与新应用程序保持同步。
现在,你已经手动创建了一个应用程序,并将其集成到你的 Django 项目中。你可以添加视图、URL 和其他必要的文件来定义你的应用程序的功能。
附录2
url 通过path -> views.py return get 方法提交的->html post ->views
附录3
在 Django 中,你可以使用模型(Model)类来定义数据库表,并使用字段选项来限制字段的非空。下面是一个使用 Django 创建 MySQL 表并限制字段非空的示例:
首先,在项目的 Django 应用中创建一个模型类(Model class),并定义字段和选项。例如,创建一个名为 MyModel 的模型类:
from django.db import models
class MyModel(models.Model):
my_field = models.CharField(max_length=100, blank=False, null=False)
# 其他字段...
def __str__(self):
return self.my_field
在上面的示例中,my_field 是一个字符字段(CharField),并使用 blank=False 和 null=False 选项来限制该字段不能为空。
然后,在 Django 项目的根目录下执行以下命令,创建数据库表:
python manage.py makemigrations
python manage.py migrate
以上命令将创建名为 mymodel 的数据库表,并将 my_field 字段设置为非空。
blank 字段表单验证规则 null是这个数据库约束
primarykey = Treu
如果要新增一列的话因为可能有原始数据,所以会提示两个选择 选1 为手动添加所有行的值。选2为,退出然后在列输入default=?还有一种是 设置blank = True,null=True
附录4
在Django中,QuerySet是一个代表数据库查询结果的对象集合。查询数据库时返回的结果通常是QuerySet对象。
QuerySet对象具有许多方法,可以用于对结果进行筛选、排序、限制和聚合等操作。以下是一些常用的QuerySet方法:
filter(**kwargs): 通过指定条件筛选结果集。
exclude(**kwargs): 排除满足指定条件的结果。
order_by(*fields): 对结果按指定字段进行排序。
annotate(*args, **kwargs): 对结果进行聚合计算。
distinct(): 返回去重后的结果集。
values(*fields): 仅返回指定字段的值。
count(): 返回结果集的数量。
first(): 返回结果集的第一个对象。
last(): 返回结果集的最后一个对象。
附录5:
Django生成的表字段的默认类型取决于你在模型类中字段的定义。以下是一些常见的字段类型及其对应的默认数据库类型:
CharField: 默认情况下生成的数据库字段类型是VARCHAR。
IntegerField: 默认生成的数据库字段类型是INTEGER。
TextField: 默认生成的数据库字段类型是TEXT。
BooleanField: 默认生成的数据库字段类型是BOOLEAN。
DateField: 默认生成的数据库字段类型是DATE。
DateTimeField: 默认生成的数据库字段类型是DATETIME。
DecimalField:存储 是十进制具有max_digits=5和decimal_places=2。这意味着该字段最多可以存储5位数,小数点后有2位数。这允许存储类似于12345.67或1.23的值。