السماح لل- حرف في أسماء المستخدمين في واجهة جانغو المسؤول ""

StackOverflow https://stackoverflow.com/questions/1214453

  •  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.

وسوف تجد أن موقع الإدارة جانغو من السهل جدا لتخصيص باستخدام هذه التقنيات، وخاصة بالنظر إلى موقع الإدارة هو مجرد التطبيق جانغو منتظم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top