社区版pycharm 创建django

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

你可能感兴趣的:(pycharm,django,sqlite)