暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Django常见错误解决方法

关外飞鹰 2021-07-26
417
  • Django 1.11.x版本和python3.7版本不兼容

解决方法:

打开文件(右键notepad++pycharm打开),

"D:\xxx\Python\Python37\lib\site-packages\django\contrib\admin\widgets.py"

 找到152行:   '%s=%s' % (k, v) for k, v inparams.items(),这个widgets.py文件错了,只需要把上面.items(),这个后面的逗号去掉就可以了,或者将django升级到 django 2.0及以上版本

注:D:\xxx\Python\Python37为自己的计算机Python的安装目录


  • Django 中 mysqlclient报错

错误信息:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or neweris required; you have 0.9.3.


解决办法:

方法一:找到Django目录下的base.py文件将以下语句注释:

if version < (1, 3, 13):raiseImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' %Database.version)


方法二:init.py中

import pymysql

pymysql.install_as_MySQLdb()

更改为

import MySQLdb


  • Django 验证码

pip install django-simple-captcha

若验证码加载不出来手动安装Vera.ttf........\Lib\site-packages\captcha\fonts\(...为自己计算机的Python安装路径)选中该字体,然后右键安装即可。

  • Django自定义错误界面报错handler404handler500

错误信息:

Thecustom handler404 view 'index.views.page_not_found' does not take the correctnumber of arguments (request, exception).

解决办法:

 在一个views中关联html,然后再将viewsurl建立隐射关系。注意:解决两个问题的关键在于在Django2.2.2下,404的错误不能有参数:exception,但是500的错误必须有exception,如此解决问题。

from django.shortcuts import render
# 404
def page_error(request):
return render(request, 'error404.html',status=404)
# 500
def page_not_found(request, exception):
return render(request, 'error404.html',status=500)


  • windows下使用Django前台无法载入css的解决办法

前台、后台如果无法加载css等样式。

这是因为你安装的某些IDE 或者其他更改了注册表导致的,

系统的注册表\HKEY_CLASSES_ROOT\.css的Content Type不是text/css,修改即可。改完记得重启开发服务器并按Ctrl+F5强制刷新页面。


  • Django 返回流文件时使用中文文件名的问题

# Python3
from urllib.parse import quote
response['Content-Disposition'] = 'attachment;filename={0}.xlsx'.format(quote(filename))


  • Django-admin 导出excle   数值范围筛选

class ExportExcelMixin(object):
    .......
class StatusFilter(SimpleListFilter):
title = '分数'
parameter_name = '分数'
def lookups(self, request, model_admin):
return [(1, '<60'), (2,'61-80'), (3, '81-100')]
def queryset(self, request, queryset):
if self.value() == '3':
returnqueryset.filter(mark__gt=80)
elif self.value() == '1':
returnqueryset.filter(mark__lt=60)
elif self.value() == '2':
returnqueryset.filter(mark__gte=61, mark__lte=80)
@admin.register(Achievement)
class AchievementAdmin(admin.ModelAdmin,ExportExcelMixin):
list_display = ['college', 'major','classes', 'student','teacher', 'mark', 'c_time']
list_filter = (StatusFilter,)
search_fields = ('student__name',)
date_hierarchy = 'c_time'
actions = ['export_as_excel']

 

  • Django上传文件

model:file =models.FileField(verbose_name="申请文件")

view:myFile =request.FILES.get('code')

cl.code=myFile
更新文件
<label>
<span>目前文件:</span>
<img src="/media/{{ data.code}}" width="80px" height="100"/>
{{ data.code }}
<input type="hidden" id ="muqian" name="muqian" value="{{ data.code}}" />
</label>
<label class="elegant-aero label">
      <span>文件更新</span>
           <input  type="file" id ="code"  name="code" value="{{ data.code }} "/>
</label>

 

  • Django邮箱配置

在settings.py中添加如下信息:

EMAIL_HOST = 'smtp.sina.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'gwfy2020@sina.com'
EMAIL_HOST_PASSWORD = '授权码,不是密码'
EMAIL_USE_TLS = False
EMAIL_FROM = 'gwfy2020@sina.com'


  • Django 根据一个表的值自动更新另一个表的值

class Consume(models.Model):
cno = models.CharField(max_length=16,verbose_name=u"编号")
name = models.CharField(max_length=16,verbose_name=u"名称")
unit = models.DecimalField(max_digits=8,decimal_places=2,verbose_name=u"单价")
num =models.IntegerField(verbose_name=u"数量")
price =models.DecimalField(max_digits=8, decimal_places=2,verbose_name=u"总价")
cdate =models.DateField(verbose_name=u"日期")
def __str__(self):
return str(self.id)
def save(self, *args, **kwargs):
# do this only whencreated
if not self.pk:
# dosomething you want like
dailyConsumption, is_created =DailyConsumption.objects.get_or_create(cno=self.cno,name=self.name)
ifdailyConsumption.num:
dailyConsumption.num += self.num
else:
dailyConsumption.num = self.num
dailyConsumption.save()
super().save(*args,**kwargs)
class Meta:
db_table='consume'
verbose_name = '消耗采购信息'
verbose_name_plural =verbose_name
class ConsumptionRegister(models.Model):
cno = models.CharField(max_length=16,verbose_name=u"编号")
name = models.CharField(max_length=16,verbose_name=u"名称")
num = models.IntegerField(verbose_name=u"数量")
def __str__(self):
return str(self.id)
def save(self, *args, **kwargs):
# do this only whencreated
if not self.pk:
# dosomething you want like
dailyConsumption, is_created =DailyConsumption.objects.get_or_create(cno=self.cno,name=self.name)
ifdailyConsumption.num:
dailyConsumption.num -= self.num
else:
dailyConsumption.num = self.num
dailyConsumption.save()
super().save(*args,**kwargs)
class Meta:
db_table='consumptionRegister'
verbose_name = '消耗登记'
verbose_name_plural =verbose_name
class DailyConsumption(models.Model):
cno = models.CharField(max_length=16,verbose_name=u"编号")
name = models.CharField(max_length=16,verbose_name=u"名称")
num =models.IntegerField(verbose_name=u"库存数量",null=True,blank=True)
alarm =models.IntegerField(verbose_name=u"报警数量",blank=True,null=True)
def __str__(self):
return str(self.id)
class Meta:
db_table='dailyConsumption'
verbose_name = '消耗管理'
verbose_name_plural =verbose_name

 


文章转载自关外飞鹰,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论