传播、沟通、分享
—— 一直“有你” (尼克地带)
Ą
关注我
ǣ
RSS订阅
RSS Feed
订阅到 QQ邮箱
订阅到 有道阅读
订阅到 鲜果
订阅到 抓虾
订阅到 iGoogle
ǔ
新浪微博
Python && Django
作者: nick
分类:
CentOS
,
django
,
linux
,
python
发布时间: 2022-04-15 14:20
ė
6
Python && Django
已关闭评论
文章目录
# 一、django笔记 django配置 diango官方API文档: https://docs.djangoproject.com/zh-hans/4.0/ 菜鸟教程diango教程:https://www.runoob.com/django/ # 1、通过pip安装diango ```bash pip list pip install diango #创建django项目 #可以通过编辑器创建django项目 #也可以通过命令创建 django-admin startproject xxxProjectname #创建django的APP python manage.py startapp xxxApp ``` 修改pip源: - 在很多环境下,pip默认的镜像源下载速度会很慢或者直接无法使用,这时候我们可以临时指定镜像源,如: ```bash pip install
-i
``` - 这样通过 − i -i−i 参数来临时指定下载的镜像源虽然能够解决问题,但每次加入过长的后缀十分麻烦。因此,我们需要修改pip的配置文件永久地更改pip的镜像源。pip的配置文件在linux系统中为: ```tex ~/.pip/pip.conf ``` - 在windows系统中为: ```tex C:\Users\{YourNanme}\AppData\Roaming\pip\pip.ini ``` - 若上述配置文件不存在,则手动创建。也可通过下面的命令查看配置文件位置: ```bash pip -v config list ``` - 找到pip的配置文件后,以阿里云镜像为例,修改文件内容为: ```bash [global] index-url=http://mirrors.aliyun.com/pypi/simple/ trusted-host=mirrors.aliyun.com ``` - 保存配置文件,则完成了对pip默认镜像源的更换。 版权声明:本文为CSDN博主「Stoneplay26」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_28753373/article/details/119540774 # 2、错误处理 以上命令执行完后,就会生成django所有文件,其中有两个文件要注意 ## 2.1. settings.py 中默认的模板中没有引入os模块会导致编译和执行出错,加入即可 ```python #在文件最头部引入文件 import os ``` ## 2.2. 模板生成的db.sqlite3数据库文件并不是一个有效的数据库文件,所以没有办法生成相关的数据,导致django后台没法初始化 ```bash #通过sqllite3.exe重新创建文件 sqlite3.exe 你的目录\db.sqlite3 #进入sqlite3中查看数据是否正常,如果不正常再重新创建下试试 .datebases #这里会显示正常的信息,并不会报错 ``` ## 2.3. django-admin启动错误 > > pythoncharm 中解决启动server时出现 “django.core.exceptions.ImproperlyConfigured: Requested setting DEBUG, but settings are not configured”的错误,这是项目支行时的环境变量错误导致。 > > 在IDE的运行配置里面设置环境变量即可: > >
> > 顺着这个思路,一直找解决方案,终于找到了如何设置django项目的配置。 > > ```bash > export DJANGO_SETTINGS_MODULE=mysite.settings > ``` > > > > 其实也就是添加环境变量罢了,只不过在pythoncharm中,我们需要将环境变量添加到IDE里面。。。 > > ![img](https://s2.loli.net/2022/04/05/z75LOyid3m2rhup.png) ## 2.4.CSRF验证失败 csrf豁免有三种方式,参考:https://blog.csdn.net/yuanfate/article/details/107675783,如下: 1. 注释掉中间件 在settings中找到MIDDLEWARE,注释掉:‘[django](https://so.csdn.net/so/search?q=django&spm=1001.2101.3001.7020).middleware.csrf.CsrfViewMiddleware’,即可成功 ![在这里插入图片描述](https://s2.loli.net/2022/04/05/RD1J6wB94lrnsHb.png) > 注意:如果注释,所有的csrf都避过了post请求 2. 在方法上添加 @csrf_exempt ```python @csrf_exempt def upload_file_test(request): return HttpResponse("Upload Success.") ``` 3. 在表单中添加{%csrf_token%} ```html
{% csrf_token %} {% htag 'file' 'mfile' '这是一个按钮' %}
{% htag 'submit' 'sub' '开始上传' %}
``` 2. x ## 2.5、[解决django 在上传文件时 request.FILES 为空的问题](https://www.cnblogs.com/Live-up-to-your-youth/p/13943111.html) 用html的form上传文件时,request.FILES为空,没有收到上传来的文件,但是在request.POST里找到了上传的文件名(只是一个字符串)。 解决方法:为form表单规定enctype属性,其值为"multipart/form-data"。 enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。 | 值 | 描述 | | --------------------------------- | ------------------------------------------------------------ | | application/x-www-form-urlencoded | 在发送前编码所有字符(默认) | | multipart/form-data | 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。 | | text/plain | 空格转换为 “+” 加号,但不对特殊字符编码。 | ```html
``` 2.6、X # 3、进行sqlite数据初始化 ```bash #下面这句很可能不需要 #python manage.py makemigrate python manage.py migrate #此时会显示数据库的初始化过程 #创建admin用户密码,直接用命令行添加即可:python manage.py createsuperuser ,按提示输入信息即可。 python manage.py createsuperuser #至此账号创建完成,登录admin账号查看成果 -启动项目查看效果 python manage.py runserver #浏览器访问 http://127.0.0.1:8000/admin/ #提示登录窗中输入刚才创建的账号密码登录,登录成功后则看到管理员页面 #同时在迁移的库中 auth_user表中会有一条记录,该记录为刚创建的用户信息 ``` # 4、更改django后台为中文 这里做一个改动使我们访问的页面为中文 ```python #配置文件中(settings.py) LANGUAGE_CODE = 'zh-hans' ``` 重新启动服务,我们看到页面转变成中文页面了 # 5、加载静态文件 - 建立静态文件目录,此可以建在任意目录,建议建在项目根目录或APP的根项目,用static等专门名称进行标识 - 在settings.py中对静态文件目录进行配置 ```python STATIC_URL = 'static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR,"static"), os.path.join(BASE_DIR,"mIndex","mstatic"),//静态文件目录 ] ``` - 在模板文件中进行静态文件加载 ```python #模板文件头部加入静态文件加载 {% load static %} #引入静态文件时写法
``` # 6、多APP加载配置 1. 在根目录下建立apps目录(python packages选项),并将apps目录设置为source root,用于存放所有的app模块 2. 在settings.py中配置app多目录加载支持 ```python import os from pathlib import Path import sys # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent sys.path.insert(0,os.path.join(BASE_DIR,"apps")) ``` # 7、ORM相关配置 ## 7.1 Error Loading MySQL module 问题处理 python django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient? 问题原因及解决方法: python3 中django连接mysql使用的包是pymysql, 所以第一步先安装 pymysql `pip install pymysql`, 安装了并不代表就可以了, 还需要在项目的__init__.py ```bash myblog/ ├── apps ├── Dockerfile ├── manage.py ├── myblog │ ├── __init__.py # 此处添加代码 │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── statics └── templates ``` 文件中添加以下代码: ```python import pymysql pymysql.install_as_MySQLdb() ``` # 8、django新建项目步骤 ## 8.1. 创建app,例如mIndex ## 8.2. 在根目录下创建package目录,apps ## 8.3. 在settings.py中注册app,INSTALLED_APPS中进行注册webdemo ```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', #'mIndex', 'mIndex.apps.MindexConfig' ] ``` ## 8.4. 在settings.py中添加app路径 ```python #导入模块 import sys #添加apps路径 #BASE_DIR = Path(__file__).resolve().parent.parent sys.path.insert(0,os.path.join(BASE_DIR,"apps")) ``` ## 8.5. 创建模板文件夹templates和静态文件夹static,在settings.py中进行注册 ```python #注册模板文件夹templates TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')],#主要是这里 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], "libraries":{ # 添加这边三行配置 'mtags':'templatetags.music_tags' # 添加这边三行配置 } }, }, ] #注册静态文件夹static STATIC_URL = 'static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR,"static"), os.path.join(BASE_DIR,"apps","mIndex","mstatic"),#主要是这里 ] ``` ## 8.6. 注册访问请示 ```python #示例,views.py中响应index请示解析 #from django.shortcuts import render #from django.http import HttpResponse #from django.http import HttpResponseRedirect def index(request): return render(request, "index.html") #示例,urls.py中注册index请示 #from mIndex import views urlpatterns = [ path('admin/', admin.site.urls), path("", views.index)#主要是这里 ] ``` ## 8.7. 创建数据库app_python,并配置数据库连接 ```python DATABASES = { 'sqlite': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', }, 'default' : { 'ENGINE': 'django.db.backends.mysql', 'PORT': "3306", "HOST" : '127..0.1', 'USER' : 'root', 'PASSWORD' : '123456', "NAME" : 'app_python' } } ``` ## 8.8. 在models.py中注册数据库模型 ```python from django.db import models # Create your models here. class Musicinfo(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32,blank=False,) area = models.CharField(max_length=32,blank=False,default="香港") gender = models.IntegerField(blank=False,default=1) song = models.CharField(max_length=32,blank=True,) ctime = models.DateTimeField(auto_now_add=True) utime = models.DateTimeField(auto_now=True) #Django之Model的Meta选项详解 https://blog.csdn.net/bbwangj/article/details/79967858 class Meta: managed = True #是否会同步到数据库中的表,默认是True #db_table = "music"#同步的表名,默认为appname_classname ``` ## 8.9. 在项目目录下的\_\_init.py\_\_中添加注册数据库访问库 ```python import pymysql pymysql.install_as_MySQLdb() ``` ## 8.10. 生成数据库 ```python #生成变更 python manage.py makemigrations #执行和生成数据模型 python manage.py migrate ``` ## 8.11. 配置静态文件访问,[5、加载静态文件](#5、加载静态文件) ## 8.12. django后台admin相关配置 - app名称显示配置 ```python from django.apps import AppConfig class MindexConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'mIndex' #主要是这一行配置各应用的显示名称 verbose_name = "音乐应用" ``` - 管理后台相关标题显示配置 ```python from django.contrib import admin from mIndex.models import Musicinfo class MusicinfoAdmin(admin.ModelAdmin): #fields = ('name','area','gender','song') list_display = ('id','name','area','song','ctime','utime') fieldsets = ( ['Main', { 'fields':( 'name','area','song'), }], ['Advance', { 'classes': ('collapse',), # CSS 'fields': ('gender',), }] ) search_fields = ("name",) list_editable = ('name','area','song') # Register your models here. admin.site.register(Musicinfo,MusicinfoAdmin) #下面配置后台相关显示名称 admin.site.site_header = '音乐后台管理' admin.site.site_title = '我在浏览器标签' admin.site.index_title = '我在后台首页' ``` - 表格及模型显示标题和字段配置 ```python from django.db import models # Create your models here. class Musicinfo(models.Model): #字段配置是用verbose_name来配置后台页面显示 id = models.AutoField(primary_key=True,verbose_name="编号") name = models.CharField(max_length=32,blank=False,verbose_name="姓名") area = models.CharField(max_length=32,blank=False,default="香港",verbose_name="省份") gender = models.IntegerField(blank=False,default=1,verbose_name="性别") song = models.CharField(max_length=32,blank=True,verbose_name="歌曲") ctime = models.DateTimeField(auto_now_add=True,verbose_name="创建时间") utime = models.DateTimeField(auto_now=True,verbose_name="更新时间") class Meta: managed = True #是否会同步到数据库中的表,默认是True #db_table = "music"#同步的表名,默认为appname_classname #表格名称配置是用verbose_name来配置后台页面列表显示 verbose_name = '歌曲列表' #表格左边名称显示名称配置是用verbose_name_plural来配置后台左边页面列表显示 verbose_name_plural = '歌曲列表' ``` - 自定义设置一张指定的数据表的列表展示内容 ```python from django.contrib import admin # Register your models here. from hello import models # 类名可以随意 class ControlPerson(admin.ModelAdmin): '''自定义hello_person表在admin管理后台的数据列表展示页面里展示哪几个表字段内容,需要重写属性list_display''' list_display = ('id',"name","age") # 重写属性list_display,来设置展示的表字段 admin.site.register(models.Person,ControlPerson) ``` - 添加搜索功能 ```python from django.contrib import admin # Register your models here. from hello import models class ControlPerson(admin.ModelAdmin): '''自定义hello_person表在admin管理后台的数据列表展示页面里展示哪几个表字段内容,需要重写属性list_display''' list_display = ('id',"name","age") # 重写属性list_display,来设置展示的表字段 search_fields = ("name",) # 重写属性search_fields,把表字段name的值当做搜索条件 admin.site.register(models.Person,ControlPerson) ``` - X ## 8.13.Django Admin 后台管理 时间格式化 显示秒 修改settings.py增加以下内容 ```python from django.conf.locale.zh_Hans import formats as zh_formats DATETIME_FORMAT = "Y-m-d H:i:s" zh_formats.DATETIME_FORMAT = "Y年m月d日 H:i:s" ``` # 二、 发布django 项目 ## 1. error: Microsoft Visual C++ 14.0 is required问题最佳解决方法 Microsoft Visual C++ Build Tools 2015 文件名为:visualcppbuildtools full 下载下来安装即可。 ![img](https://s2.loli.net/2022/04/11/VGWyLX1k8TazS7H.png) 如果包丢失或者损坏 ,访问以下链接: 链接:https://pan.baidu.com/s/154Nba8InfUyF5SITxgwTpg 提取码:a3za 双击visualcppbuildtools_full.exe,选择默认即可,点击安装,等待10分钟左右即可完成安装。 ![img](https://s2.loli.net/2022/04/11/XaUPfJ3xukpE2VZ.png) 最后安装完成,查看 控制面板——程序——卸载程序里下多了一个文件 Microsoft visual c++ Build Tools: ![img](https://s2.loli.net/2022/04/11/uyfRCSXnmgNAFp6.png) 即安装成功。 结果再到cmd中pip安装自己所需的包即可。 参考: visual c++ build tools的安装与使用 版权声明:本文为CSDN博主「Steven灬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_40547993/article/details/89399825 ## 2、PIP安装mod_wsgi的,如何设置MOD_WSGI_APACHE_ROOTDIR环境? ```bash set "MOD_WSGI_APACHE_ROOTDIR=F:\Apache24" pip install mod_wsgi ``` ## 3、安装C++Build太大,而且也比较占资源 如题,所以最后我还是选择了从python的资源站里面下载whl文件下来进行配置,简便、快速,请参考: [Windows上部署django项目Apache+mod_wsgi+django+web)](https://blog.csdn.net/xyy1028/article/details/89440858 "Title") 推荐使用以下第4点来运行并发量不大的django项目。 ## 4、Apache的proxy模块来运行django项目 - 首先,在 Apache 的配置文件中,打开 mod_proxy 和 mod_proxy_http ,一般这个已经打开了根据实际情况需要,如果没有打开即去掉 httpd.conf 中的:LoadModule proxy_module modules/mod_proxy.so 和 LoadModule proxy_http_module modules/mod_proxy_http.so前面的 # - 在apache的vhost文件中添加,具体里面的内容根据自己需要进行修改 ```nginx
ServerName www.webtest.com ServerAlias www.webtest.com ProxyRequests off
Order deny,allow Allow from all
ProxyPass http://localhost:3000/ ProxyPassReverse http://localhost:3000/
``` - httpd -t 测试配置是否验证能通过 - 重启apache查看效果 - 添加django在系统后台运行 - 添加域名解析到apache配置,成功后即可查看相关效果 # 三、python 的whl 资源信息 python 库资源下载: https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
本文出自 传播、沟通、分享,转载时请注明出处及相应链接。
本文永久链接: https://www.nickdd.cn/?p=2152
0
CentOS
,
django
,
python
«
CentOS 8 服务器部署笔记
LVS+keepalived+nginx+apache搭建高可用、高性能php集群
»
ő
分类目录
apache
(23)
C
(3)
css
(41)
db
(58)
design
(2)
flash
(67)
html
(36)
java
(66)
js
(179)
linux
(152)
nginx
(13)
open
(62)
oracle
(3)
OS
(3)
phone
(6)
php
(75)
python
(1)
Ruby
(2)
Ruby – Rails
(2)
ui
(1)
wexin
(1)
windows
(39)
互联网
(67)
学习
(159)
未分类
(7)
生活
(18)
CentOS 下的最新文章
使用 cowsay 命令的 3 种有趣方式
Linux好用命令之figlet命令
LVS+keepalived+nginx+apache搭建高可用、高性能php集群
CentOS 8 服务器部署笔记
CentOS下nagios报警飞信部署四步走
Centos 下查看服务器CPU的核数
快速配置 Samba 将 Linux 目录映射为 Windows 驱动器,用于跨平台编程
CentOS+Cacti安装配置
用yum安装rrdtool
【解决】Starting MySQL.Manager of pid-file quit without updating fi[失败]
Python && Django
使用 cowsay 命令的 3 种有趣方式
Linux好用命令之figlet命令
LVS+keepalived+nginx+apache搭建高可用、高性能php集群
CentOS 8 服务器部署笔记
Linux技巧:一次删除一百万个文件的最快方法
如何指定进程运行的CPU
linux暂停一个在运行中的进程
linux下删除某个目录下大量文件办法
Nginx+PHP环境自动部署工具 Qlnmp
iptables 的防火墙正常运行时间和安全性
Python && Django
随机文章
RDBMS的lucene爬虫
一个用nginx后访问网站子目录问题
lucene 分布式运行框架 Nut 1.0a4 测试实例
女记者当CEO:王利芬的错误跟马云有关
并非SleepMode之错——IE9对Flash Player的影响
让 ajax更加友好,实时显示后台处理进度。
Web 设计师的 50 个超便利工具(下)
jQuery API 1.5 中文版下载
DocViewer 在线文档阅读
[MySQL FAQ]系列 — 你所不知的table is fu...
标签云
apache
api
bug
CentOS
css
flash
Flex
Google
html
html5
ie
java
javascript
jquery
js
linux
mysql
nginx
PDF
php
Redis
web
windows
中文
压缩
图片
安装
工具
开发
引擎
性能
插件
搜索
效果
数据
数据库
文件
服务器
浏览器
监控
管理
缓存
设计
调试
转换
Ɣ
回顶部