測驗結果畫面想加一下圖片,依成績級距放對應的圖片。
要先來設定圖片要儲存的地方:
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
不需要自己建立資料夾,只要在admin上傳第一張圖片後,會自行生成一個mysite/media資料夾。
在最後面加上這一行,這樣才可以在網頁上顯示圖片:
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
*quiz/models.py
class Six(models.Model):
range_start = models.IntegerField(default=0)#分數區間的頭
range_end = models.IntegerField(default=0)#分數區間的尾
grade = models.CharField(max_length=200)
photo = models.ImageField(upload_to='grade_pictures', default="")
1.ImageField用於保存圖像文件,upload_to是圖片上傳後要儲存的路徑 'mysite/media/grade_pictures'。
2.要安裝pillow套件。
3.grade代表的是每個分數區間,總共有六個:傑出、超乎期待、合格...請參考O.W.L exam。
def result(request, total):
score = total
six = Six.objects.all()
for s in six:
if score in range(s.range_start, s.range_end):
#判斷測驗分數位在哪個區間
grade = s.grade
photo = s.photo
else:
pass
return render(request, 'result.html', locals())
<TABLE border="0" class="t1" cellpadding="9">
<TR>
<TD style="font-size:20px;" align="center" colspan="3" class="td1" bgcolor="#5AF961">測驗結果:{{ grade }}</TD>
</TR>
<br />
<TR>
<TD class="td2"><img src="{{ photo.url }}" width="900"></TD>
</TR>
<TR>
<TD class="td2"><a href="/quiz/"><p style="text-align:center">⇢再做一次測試</p></a></TD>
</TR>
</TABLE>
記得放置photo變數時是寫{{ photo.url }}。
結果長這樣啦~
題外話,今天聚餐回家後,努力坐到電腦桌前打字,沒多久眼皮跟著在打架,有錯誤再煩請告知,萬分感謝。趕快洗睡明天自然醒zzz
補充
admin.py新增對Six操作
from django.contrib import admin
from .models import Question, Choice,Six
# Register your models here.
class ChoiceInline(admin.StackedInline): # class StachedInline
model = Choice
extra = 4 # 一個問題有四個選項
class QuestionAdmin(admin.ModelAdmin):
list_display = ('id', 'question_text') # 詳細說明參考附錄圖一
fieldsets = [
(None, {'fields': ['question_text']}),
] # 詳細說明參考附錄圖二
inlines = [ChoiceInline]
class SixAdmin(admin.ModelAdmin):
list_display = ('id', 'range_start','range_end','grade','photo')
admin.site.register(Question, QuestionAdmin)
admin.site.register(Six, SixAdmin)