## 配置管理员中文界面 ```python LANGUAGE_CODE = 'zh-hans' #这样重启服务端就是中文了 ``` ## 静态文件配置 1. 编写一个用户登录页面 2. 静态文件 不怎么经常变化的文件 主要针对html文件所使用的各种资源 css文件 js文件 img文件、第三方框架文件 django怎对静态文件资源需要单独开设一个目录统一存放 static目录:该目录下如果各种类型的文件都多 还可以继续创建目录 - css目录 - js目录 - img目录 - utils目录/plugins目录/libs目录/others目录/不创 3. 资源访问 我们在地址栏中之所以可以属于路由获取到相应的资源是因为程序员提前开设了资源的接口  ## 静态文件相关配置 首先找到项目的配置文件`settings.py`文件,然后再最后面加上这一句话 ```python STATICFILES_DIRS=[] # 里面是静态文件的配置路径 STATICFILES_DIRS=[ os.path.join(BASEBASE_DIR,'static') ] ``` ```python STATIC_URL = '/static/' # 这个对应的是html的文件前缀也就是访问文件静态资源的接口前缀(通行证) STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), # 这个static这个对应的是项目static目录文件 os.path.join(BASE_DIR, 'static1'), # 存储静态文件资源的目录名称 os.path.join(BASE_DIR, 'static2'), # 存储静态文件资源的目录名称 ] ``` 接口前缀正确之后 会拿着后面的路径依次去到列表中自上而下的查找 一旦找到就返回  这个静态文件就可以正常访问了 但是这里就又出现一个新的问题了,如果需要该接口前缀,那么,如果有很多html页面那么就需要修改很多的链接前缀了很麻烦。 接口前缀动态匹配 ```python {% load static %} ``` ## form表单 action 控制数据的提交的地址 1. action="" 数据默认提交给当前页面所在的地址 2. action="https://www.baidu.com/" 完整地址 3. action="/index/" 朝当前服务端的index地址提交 method 控制数据的提交的方法 - 默认是get - 可以改post 请求方法补充 - get 朝服务端索要数据 也可以携带一些额外的要求 携带额外数据的方式:URL?xxx=yyy&uuu=zzz 问号后面携带数据的大小是有限制(2kb)的并且不能携带敏感数据 - post 朝服务端提交数据 携带额外的数据方式:请求体 请求体携带数据安全性较高并且没有大小限制 前期发送post请求需要注释掉配置文件中的某一行 ```python MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ```  csrf认证,再提交form表单是会进行认证,如果不注释就需要再html的form表单里面添加下面这句话 ```python {% csrf_token %} #需要把这句话添加到form表单就可以了,前期学习可以把这个插件去掉这句话就不用加了 {# {% csrf_token %} #} 用户注册 用户名 密码 ```  这样就可以了 ## request对象 request.method 获取请求方式 结果是纯大写的字符串数据 POST/GET request.POST 获取post请求请求体里面携带的数据 request.POST.get() 获取列表最后一个数据值 request.POST.getlist() 获取整个列表数据 #必须要传一个参数,获取这个参数下的所有数据 request.GET 获取网址问号后面携带的数据 request.GET.get() 获取列表中的最后一个数据值 #必须要传一个参数,获取这个参数下的所有数据 request.GET.getlist() 获取整个列表数据 在视图函数中针对不同的请求代码编写 ```python if request.method =='POST': return HttpResponse() return HttpResponse() ``` ## pycharm连接数据库 1. pycharm初次连接数据库 需要下载对应驱动    ## django连接数据 django自带的sqlite3是一个小型的数据库 功能比较少 主要用于本地测试 实际项目中都会替换掉它 默认配置sqlite3 ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } ``` 修改配置文件 ```python 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 'root', 'NAME': 'djg01', 'CHARSET': 'utf8' } ``` 需要指定模块 django1.x版本需要在项目目录下或则app目录下\__init__.py编写代码 ```python import pymysql pymysql.install_as_MySQLdb() ``` django2.x及以上都可以直接通过下载mysqlclient模块解决 ```python pip3.8 install mysqlclient ``` 该模块windows下载问题不大 主要是mac电脑可能有问题 报错以及修改  解决办法修改源码  windows下载了mysqlclient这个模块上面的源码就不能修改了,再改回去就行了 ## ORM简介 ORM:对象关系映射 能够让不会SQL语句的python程序员 使用python面向对象的语法来操作数据库 类 表 对象 一条条数据 对象点名字 数据获取字段对应的值 ORM由于高度封装了SQL 所以有时候效率较低 我们需要自己手写SQL ## ORM基本操作 1. 先在models.py中编写模型类 ```python class Goods(models.Model): # 字段名 = 字段类型+约束条件 id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) price = models.IntegerField() ```   ```python #在项目终端执行命令 #将操作记录到小本本上(migrations) python38 manage.py makemigrations #将操作记录到数据库上,同步数据 python38 manage.py migrate 注意每次在models.py修改了与数据库相关的代码 都需要在次执行上述命令 ``` ## ORM基本语句 ```python import goods.models install = goods.models.Goods.objects.create() select = goods.models.Goods.objects.filter() # 返回的是列表套对象的形式 update = goods.models.Goods.objects.filter()[0].update() # 如果不先查询那么就是修改全部 delete = goods.models.Goods.objects.filter()[0].delete() # 如果不先查询那么就是删除全部 ``` Last modification:December 12th, 2022 at 09:24 pm © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments
Comment here is closed