首页 > 解决方案 > 在刷新服务器之前,更改不会反映在 tempate django 中

问题描述

我正在尝试更新我网站的徽标,直到第一次上传并在模板中加载它之前没有问题。但是,当我尝试更新徽标时,它不会反映在模板中,直到我进行一些更改以有意刷新 Django 服务器或我中断并再次运行它。我正在使用 DJANGO 1.11.3 和 PYTHON 3。我对 django 还是很陌生,如果有人需要以下内容以外的其他内容,我会提供。谢谢

页眉.html

<a href="#" class="logo">
<!-- mini logo for sidebar mini 50x50 pixels -->
<!-- logo for regular state and mobile devices -->
{% load static %}
{% for i in company_logo %}
 <img class="NO-CACHE" src = "/{{ i.Company_logo }}" alt="Profile Picture" style="height:50px;width:120px">
{% endfor %}

视图.py

from .models import Company_master

company_logo = Company_master.objects.all()

def companys_logo(request):
company_data = Company_master.objects.all()
return render(request,'service/companys_logo.html',{'company_logo':company_logo, 'company_data':company_data})

def post_company_logo(request):
company_id = request.POST.get('inp_id_hidden')
company_logo = request.FILES.get('inp_company_logo')
company_obj = Company_master.objects.get(Company_code = company_id)
company_obj.Company_logo = company_logo
company_obj.save()
company_obj.refresh_from_db()
return redirect("service:company_details")

模型.py

class Company_master(models.Model):
Company_code = models.AutoField(primary_key=True)
Company_name = models.CharField(max_length=100)
Address = models.CharField(max_length=200)
Owner_name = models.CharField(max_length=50)
Jurisdiction = models.CharField(max_length=100, null=True)
Email = models.CharField(max_length=100, null=True)
Email_service = models.CharField(max_length=50, null=True)
Email_accounts = models.CharField(max_length=50, null=True)
PAN_no = models.CharField(max_length=20, null=True)
GSTIN_no = models.CharField(max_length=30, null=True)
Dealer_code = models.CharField(max_length=30, null=True)
Bank_name = models.CharField(max_length=30, null=True)
Branch_name = models.CharField(max_length=30, null=True)
Branch_code = models.CharField(max_length=20, null=True)
Account_no = models.CharField(max_length=30, null=True)
IFSC_code = models.CharField(max_length=20, null=True)
SMTP = models.CharField(max_length=20, null=True)
Fax = models.CharField(max_length=30, null=True)
CIN_no = models.CharField(max_length=30, null=True)
Principal = models.CharField(max_length=10, null=True)
Working_hrs = models.CharField(max_length=50, null=True)
Proxy = models.CharField(max_length=30, null=True)
Password = models.CharField(max_length=30, null=True)
Port_no = models.CharField(max_length=10, null=True)
Phone_nos = models.CharField(max_length=100, null=True)
Mobile_nos = models.CharField(max_length=100)
Company_logo = models.ImageField(upload_to='static/service/media/', null=True)

def __str__(self):
    return str(self.Company_name)

标签: djangopython-3.x

解决方案


问题已解决。当我更新徽标时,它不会从数据库中获取新值,因为以下变量是全局声明的,这会阻止新值进入。

# views.py
company_logo = Company_master.objects.all()

这个变量应该包含在每个页面中,以便在页面刷新时一次又一次地调用它,就像这样

def companys_logo(request):
company_logo = Company_master.objects.all()
company_data = Company_master.objects.all()
return render(request,'service/companys_logo.html',{'company_logo':company_logo, 'company_data':company_data})

推荐阅读