第一步 创建机构模型
class CourseOrg(models.Model):
name = models.CharField(max_length=50, verbose_name=u"机构名称")
desc = UEditorField(verbose_name=u"机构描述",width=900, height=300, imagePath="org/ueditor/",
filePath="org/ueditor/", default='')
tag = models.CharField(default="全国知名", max_length=10, verbose_name=u"机构标签")
category = models.CharField(default="pxjg", verbose_name=u"机构类别", max_length=20, choices=(("pxjg","培训机构"),("gr","个人"),("gx","高校")))
click_nums = models.IntegerField(default=0, verbose_name=u"点击数")
fav_nums = models.IntegerField(default=0, verbose_name=u"收藏数")
image = models.ImageField(upload_to="org/%Y/%m", verbose_name=u"logo", max_length=100)
address = models.CharField(max_length=150, verbose_name=u"机构地址")
city = models.ForeignKey(CityDict, on_delete=models.CASCADE, verbose_name=u"所在城市")
students = models.IntegerField(default=0, verbose_name=u"学习人数")
course_nums = models.IntegerField(default=0, verbose_name=u"课程数")
add_time = models.DateTimeField(default=datetime.now)
class Meta:
verbose_name = u"课程机构"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
第二步 在后台创建机构实例
第三步 书写View
class OrgView(View):
def get(self,request):
all_orgs = CourseOrg.object.all()
all_city = CityDict.objects.all()
return render(request, "org-list.html", {
"all_orgs":orgs,
"all_citys":all_citys,
"org_nums": org_nums,
})
第四步 前端页面
{% for course_org in all_orgs.object_list %}
<dl class="des difdes">
<dt>
<a href="{% url 'org:org_home' course_org.id %}">
<img width="200" height="120" class="scrollLoading" data-url="{{ MEDIA_URL }}{{ course_org.image }}"/>
</a>
</dt>
<dd>
<div class="clearfix">
<a href="{% url 'org:org_home' course_org.id %}">
<h1>{{ course_org.name }}</h1>
<div class="pic fl">
<img src="{% static 'images/authentication.png' %}"/>
<img src="{% static 'images/gold.png' %}"/>
</div>
</a>
</div>
<ul class="cont">
<li class="first"><p class="pic9">课程数:<span>1</span></p><p class="c7">学习人数:<span>1000</span></p></li>
<li class="c8" style="padding-left:18px;">北京市海淀区中关村北大街</li>
<li class="pic10" style="padding-left:18px;">经典课程:
<a href="/diary/19/">c语言基础入门</a>
<a href="/diary/16/">数据库基础</a>
</li>
</ul>
</dd>
<div class="buy start_groupbuy jsShowPerfect2" data-id="22"><br/>联系<br/>服务</div>
</dl>
{% endfor %}
在存机构LOGO时,使用了ImageField,在数据库中存储的是一个字符串,是相对路径的地址
因此直接在 img标签中 data-url='{{course_org.image}}'是相对地址,还不能完成图片存取。
可以data-url='/media/{{course_org.image}}' 或者 data-url='{{ MEDIA-URL }}{{course_org.image}}'
为将MEDIA_URL注册到前端页面,需要在settings.py文件中配置
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',
# 'django.core.context_processors.media',
'django.template.context_processors.media'
],
},
},
]
此时页面中LOGO地址
但此时没有在URL中配置如何处理,因此还是没有图像显示
from django.views.static import serve //处理静态文件
from MxOnline.settings import MEDIA_ROOT
# 配置上传文件的访问处理函数
url(r'media/(?P<path>.*)$',serve,{'document_root':MEDIA_ROOT})