السماح لل- حرف في أسماء المستخدمين في واجهة جانغو المسؤول ""
-
06-07-2019 - |
سؤال
في تطبيق الويب لدينا نحن بحاجة للسماح شرطات "-" في أسماء المستخدمين لدينا. لقد مكن أن للعملية الاشتراك المستهلك على ما يرام مع هذه التعابير المنطقية ص '^ [\ ث -] + $'
وكيف يمكنني معرفة تطبيق المشرف حتى أستطيع أن تعديل أسماء المستخدمين في المصادقة> للمستخدمين تسمح لل"-" حرف في أسماء المستخدمين؟ حاليا أنا غير قادر على تعديل أي أسماء المستخدمين مع شرطات في الثلاجة، لأن فإنه سيعود خطأ التحقق من الصحة على اسم المستخدم.
وأود في محاولة لتجنب الترقيع جانغو مباشرة إن أمكن. أنا جديدة إلى حد ما في البرمجة ولكن هل هذا ما أود أن استخدام "إن شاء subclasses ترث" ل؟
المحلول
وهذا يجب أن تكون بسيطة مثل تجاوز سلوك الطبقة ModelAdmin العضو. في واحدة من التطبيقات الخاصة بك، في admin.py
تشمل التعليمات البرمجية التالية.
from django.contrib import admin
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
class MyUserCreationForm(UserCreationForm):
username = forms.RegexField(
label='Username',
max_length=30,
regex=r'^[\w-]+$',
help_text = 'Required. 30 characters or fewer. Alphanumeric characters only (letters, digits, hyphens and underscores).',
error_message = 'This value must contain only letters, numbers, hyphens and underscores.')
class MyUserChangeForm(UserChangeForm):
username = forms.RegexField(
label='Username',
max_length=30,
regex=r'^[\w-]+$',
help_text = 'Required. 30 characters or fewer. Alphanumeric characters only (letters, digits, hyphens and underscores).',
error_message = 'This value must contain only letters, numbers, hyphens and underscores.')
class MyUserAdmin(UserAdmin):
form = MyUserChangeForm
add_form = MyUserCreationForm
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
وهنا شرح قليلا.
وتعريف الدرجة الأولى (MyUserCreationForm) هو فئة فرعية (نعم المصطلحات الخاص بك هو الصحيح) من UserCreationForm. هذا هو الشكل الذي يظهر عند النقر فوق "إضافة المستخدم" في الموقع جانغو المسؤول. كل ما نفعله هنا هو إعادة تعريف مجال username
لاستخدام لدينا تحسين، التعابير المنطقية-قبول اصلة، وتغيير helptext
لإظهار هذا.
وتعريف من الدرجة الثانية يفعل نفس الشيء، باستثناء UserChangeForm.
وتعريف الطبقة النهائي هو فئة فرعية من UserAdmin، وهو ModelAdmin أن النموذج العضو يستخدم بشكل افتراضي. نحن هنا نقول أننا نريد أن نستخدم النماذج المخصصة الجديدة في ModelAdmin.
لاحظ أن لكل من هذه الفئات الفرعية، نحن فقط تغيير ما لدينا ل. سوف تكون موروثة بقية الطبقة من الأصل (UserCreationForm، UserChangeForm وUserAdmin على التوالي).
وأخيرا، فإننا تنفيذ الخطوة الهامة من تسجيل نموذج العضو مع موقع الإدارة. للقيام بذلك علينا إلغاء تسجيل UserAdmin الافتراضي، ثم قم بالتسجيل من خلال تحسين الطبقة MyUserAdmin.
وسوف تجد أن موقع الإدارة جانغو من السهل جدا لتخصيص باستخدام هذه التقنيات، وخاصة بالنظر إلى موقع الإدارة هو مجرد التطبيق جانغو منتظم.