Django的一些小雞條

django models 設置默認的查詢排序方式:

class Meta:
	ordering = ("-create_time")

form 繼承models

方法一
from django import forms
from apps.user import UserModel

class User(forms.Form):
	class Meta:
		models = UserModel
方法二
# -*- coding: utf-8 -*-
import re
from django import forms
from django.core.exceptions import ValidationError

def mobile_validate(value):
    mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$')
    if not mobile_re.match(value):
        raise ValidationError('手機號碼格式錯誤')

def username_validate(value):
    mobile_re = re.compile(r'^[0-9A-Za-z.@\-\_]{2,16}$')
    if not mobile_re.match(value):
        raise ValidationError('用戶名格式錯誤(不能是中文)')


class UserForm(forms.Form):
    """user 表單"""
    userName = forms.CharField(required=True, min_length=2, max_length=60, validators=[username_validate,])
    depart_id = forms.CharField(required=False)
    depart_name = forms.CharField(required=False)
    role = forms.CharField(required=False)
    userPwd = forms.CharField(max_length=20, min_length=6,
        error_messages={'required':'密碼不能爲空','min_length':'密碼長度不小於6',"max_length":'密碼長度不能大於12'})
    userEmail = forms.EmailField( required=True, error_messages={'required': '郵箱不能爲空.','invalid':"郵箱格式錯誤"})
    Name = forms.CharField( required=False)
    phone = forms.CharField(required=False, validators=[mobile_validate, ])
        area_level = forms.CharField(validators=[
                                     RegexValidator(r'^[123]$', '請檢查級別'),
                                 ]
                                 )
    area_status = forms.CharField(validators=[
                                      RegexValidator(r'^[01]$', '請檢查狀態'),
                                  ])
    area_order = forms.CharField(validators=[
                                   RegexValidator(r'^[0-9]{1,2}$', '請輸入2位數字'),
                               ])

views 裝飾器的使用

自定義的兩個裝飾器
def pre_fun(func):
    def inner(request, *args, **kwargs):
        print(request.path)
        kwargs = {
            "name": "你好",
            "kw": "asd"
        }
        return func(request, *args, **kwargs)
    return inner


def my_decorator(func):
    def wrapper(request, *args, **kwargs):
        print('自定義裝飾器被調用了')
        print('請求路徑%s' % request.path)
        return func(request, *args, **kwargs)
    return wrapper
方法一
@pre_fun
def index(request, *args, **kwargs):
    print(kwargs)
    return render(request, 'index.html', {'kw': kwargs})
方法二
@method_decorator(pre_fun, name="get")
class Index2View(View):
    def get(self, request, *args, **kwargs):
        return render(request, 'index.html', {'kw': kwargs})
方法三

class Index2View(View):
	@method_decorator(pre_fun)
    def get(self, request, *args, **kwargs):
        return render(request, 'index.html', {'kw': kwargs})
方法四
urlpatterns = [
    path('index', my_decorator(IndexView.as_view()), name='index'),
    path('', index, name='index1'),
    path('index2', Index2View.as_view(), name='index2'),
]

django模板全局變量的使用

第一步:寫好全局變量的函數方法:

def global_lang(request):
	“”“
	這裏可以做一些用戶權限的權限的處理
	request.user
	request.path
	request.session['key']
	”“”
    return {
        'header_json':header_json
    }

第二步:在settings 中進行配置

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',
                'XXX.XXX.global_lang'
            ],
        },
    },
]

第三步:在HTML中使用全局變量

{% include 'header.html' with header=header_json%}
或者
{{header_json}}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章