日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

strak组件(3):URL别名的优化

發(fā)布時(shí)間:2024/1/17 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 strak组件(3):URL别名的优化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

將生成URL別名的功能進(jìn)行解耦。效果和上一節(jié)的一樣。

效果圖:

?

新增函數(shù)

get_url_name(self, param) # 生成url別名,需要一個(gè)參數(shù)(list/add/edit/delete) get_list_url_name(self) # 獲取列表頁面URL的name property get_add_url_name(self) # 獲取添加頁面URL的name property get_edit_url_name(self) # 獲取編輯頁面URL的name property get_delete_url_name(self) # 獲取刪除頁面URL的name property

Stark組件

from django.urls import re_path from django.shortcuts import HttpResponse, renderclass StarkHandler(object):def __init__(self, model_class, prev):self.model_class = model_classself.prev = prevdef list_view(self, request):"""列表頁面:param request::return:"""data_list = self.model_class.objects.all()return render(request, 'stark/data_list.html', {'data_list': data_list})def add_view(self, request):"""添加頁面:param request::return:"""return HttpResponse('添加頁面')def edit_view(self, request, pk):"""編輯頁面:param request::return:"""return HttpResponse('編輯頁面')def delete_view(self, request, pk):"""刪除頁面:param request::param pk::return:"""return HttpResponse('刪除頁面')def get_url_name(self, crud):app_label, model_name = self.model_class._meta.app_label, self.model_class._meta.model_nameif self.prev:return '%s_%s_%s_%s' % (app_label, model_name, self.prev, crud)return '%s_%s_%s' % (app_label, model_name, crud)@propertydef get_list_url_name(self):"""獲取列表頁面URL的name:return:"""return self.get_url_name('list')@propertydef get_add_url_name(self):"""獲取添加頁面URL的name:return:"""return self.get_url_name('add')@propertydef get_edit_url_name(self):"""獲取編輯頁面URL的name:return:"""return self.get_url_name('edit')@propertydef get_delete_url_name(self):"""獲取刪除頁面URL的name:return:"""return self.get_url_name('delete')def get_urls(self):patterns = [re_path(r'^list/$', self.list_view, name=self.get_list_url_name),re_path(r'^add/$', self.add_view, name=self.get_add_url_name),re_path(r'^edit/(\d+)/$', self.edit_view, name=self.get_edit_url_name),re_path(r'^delete/(\d+)/$', self.delete_view, name=self.get_delete_url_name),]patterns.extend(self.extra_urls())return patternsdef extra_urls(self):return []class StarkSite(object):def __init__(self):self._registry = []self.app_name = 'stark'self.namespace = 'stark'def register(self, model_class, handler_class=None, prev=None):""":param model_class: 是models中的數(shù)據(jù)庫表對(duì)應(yīng)的類。:param handler_class: 處理請(qǐng)求的視圖函數(shù)所在的類:param prev: 生成URL的前綴:return:"""if not handler_class:handler_class = StarkHandlerself._registry.append({'model_class': model_class, 'handler': handler_class(model_class, prev), 'prev': prev})def get_urls(self):patterns = []for item in self._registry:model_class = item['model_class']handler = item['handler']prev = item['prev']app_name, model_name = model_class._meta.app_label, model_class._meta.model_nameif prev:patterns.append(re_path(r'^%s/%s/%s/' % (app_name, model_name, prev,), (handler.get_urls(), None, None)))else:patterns.append(re_path(r'^%s/%s/' % (app_name, model_name,), (handler.get_urls(), None, None)))return patterns@propertydef urls(self):return self.get_urls(), self.app_name, self.namespacesite = StarkSite()

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/lshedward/p/10561634.html

總結(jié)

以上是生活随笔為你收集整理的strak组件(3):URL别名的优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。