社区版pycharm 创建django

2023-12-14 20:47:19

一.创建
?? ?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的值。

文章来源:https://blog.csdn.net/kemmouv/article/details/132744212
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。