潭州課堂25班:Ph201805201 django 項目 第四十一課 後臺 輪播圖管理功能講解,文檔管理功能 實現 (課堂筆記)

在進入輪播圖管理頁面時,要把輪播圖顯示在頁面上,因此後臺要向前臺返回:html

圖片路由,:image_url數據庫

優先級:  priorityjson

def get(self, request):
# priority = models.Banner.PRI_CHOICEH
# priority = tuple([models.Banner.PRI_CHOICEH])
# 優先級 以字典形式返回 OrderedDict 將元祖 轉爲有序的字典,
priority = OrderedDict(models.Banner.PRI_CHOICEH)
rotation_chart = models.Banner.objects.only('image_url', 'priority').filter(is_delete=False)
return render(request, 'admin/news/news_banner.html', locals())

刪除:
前臺要向後臺傳個輪播圖的 id ,
後臺根據 id 在數據庫中查詢,查詢到以後,將 is_delete 字段改成 0 ,並保存,
def delete(self, request, banner_id):
rotation_char = models.Banner.objects.only('id').filter(id=banner_id).first()
if rotation_char:
# 刪除
rotation_char.is_delete = True
# 針對性保存
rotation_char.save(update_fields=['is_delete'])
return to_json_data(errmsg="輪播圖刪除成功")

else: return to_json_data(errno=Code.PARAMERR, errmsg="須要刪除的輪播圖不存在")

修改更新:可能更改的字段:
優先級:priority
圖片,image_url
def put(self, request, banner_id):
# 更改輪播圖
rotation_char = models.Banner.objects.filter(id=banner_id).first()
if rotation_char:
json_data = request.body
if not json_data:
return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR])
# 將json轉化爲dict
dict_data = json.loads(json_data.decode('utf8'))
try:
priority = int(dict_data.get('priority'))
# 優先級,把中文返回到前臺
priority_list = [i for i, _ in models.Banner.PRI_CHOICEH]
if priority not in priority_list:
return to_json_data(errno=Code.PARAMERR, errmsg='輪播圖的優先級設置錯誤')
except Exception as e:
logger.info('輪播圖優先級異常:{}'.format(e))
return to_json_data(errno=Code.PARAMERR, errmsg='輪播圖的優先級設置錯誤')
image_url = dict_data.get('image_url')
if image_url:
if rotation_char.priority != priority and rotation_char.image_url != image_url:
# 保存更改
rotation_char.priority = priority
rotation_char.image_url = image_url
rotation_char.save(update_fields=['priority', 'image_url'])
return to_json_data(errmsg="更新成功")

else:return to_json_data(errno=Code.PARAMERR, errmsg="參數未改變")
else:return to_json_data(errno=Code.PARAMERR, errmsg='url爲空')
else: return to_json_data(errno=Code.PARAMERR, errmsg="須要更新的輪播圖不存在")

添加輪播圖:這裏是個新的頁面,在這頁面中要顯示全部的分類,優先級,作可選框,
def get(self, request):
# 把文章分類選擇框,文章選擇框,優先級別選擇框顯示出來
tags = models.Tag.objects.values('id', 'name').annotate(num_news=Count('news')). filter(is_delete=False).order_by('-num_news', 'update_time')
# 優先級 以字典形式返回 OrderedDict 將元祖 轉爲有序的字典,
priority_dict = OrderedDict(models.Banner.PRI_CHOICEH)
return render(request, 'admin/news/news_banner_add.html', locals())


添加操做:主要對數據判斷,只有符合要求才進行保存的操做
def post(self, request):
# 添加新的輪播圖
json_data = request.body
if not json_data:
return to_json_data(errno=Code.PARAMERR, errmsg=error_map[Code.PARAMERR])
# 將json轉化爲dict
dict_data = json.loads(json_data.decode('utf8'))

try:
news_id = int(dict_data.get('news_id'))
except Exception as e:
logger.info('參數錯誤:{}'.format(e))
return to_json_data(errno=Code.PARAMERR, errmsg='參數錯誤')

if models.News.objects.filter(id=news_id).exists():
try:
priority = int(dict_data.get('priority'))
# 圖片優先級,的數字
priority_list = [i for i, _ in models.Banner.PRI_CHOICEH]
if priority not in priority_list:
return to_json_data(errno=Code.PARAMERR, errmsg='輪播圖的優先級設置錯誤')
except Exception as e:
logger.info('輪播圖優先級異常:\n{}'.format(e))
return to_json_data(errno=Code.PARAMERR, errmsg='輪播圖的優先級設置錯誤')
# 獲取輪播圖url
image_url = dict_data.get('image_url')
if image_url:
# 建立輪播圖
# 沒有則建立 ,有則取出
rotation_char_tuple = models.Banner.objects.get_or_create(news_id=news_id)
# is_created 第二個元素若是是 False,說明 存在,並取出
# 若是是 True 建立
# rotation_char 查詢集
rotation_char, is_created = rotation_char_tuple
rotation_char.priority = priority
rotation_char.image_url = image_url
# 針對性保存
rotation_char.save(update_fields=['priority', 'image_url'])
return to_json_data(errmsg="輪播圖建立成功")
else: return to_json_data(errno=Code.PARAMERR, errmsg='輪播圖url爲空')
else: return to_json_data(errno=Code.PARAMERR, errmsg='文章不存在')




文檔相關 與上邊的相似

把文檔標題,建立時間顯示到頁面上
def get(self, request):
# 把文檔數據庫中的標題,建立時間取出
docs = Doc.objects.only('title', 'create_time').filter(is_delete=False)
return render(request, 'admin/doc/docs_manage.html', locals())
docs  傳到前臺 for 循環迭代,依次顯示出標題,建立時間取出刪除:基本同上
相關文章
相關標籤/搜索