জ্যাঙ্গোতে কীভাবে একজন ব্যবহারকারী তৈরি করবেন?


91

আমি নিম্নলিখিত কোড দ্বারা একটি জ্যাঙ্গো প্রকল্পে একটি নতুন ব্যবহারকারী তৈরি করার চেষ্টা করছি, তবে হাইলাইট করা লাইনটি একটি ব্যতিক্রম ঘটায়।

def createUser(request):
    userName = request.REQUEST.get('username', None)
    userPass = request.REQUEST.get('password', None)
    userMail = request.REQUEST.get('email', None)

    # TODO: check if already existed

    **user = User.objects.create_user(userName, userMail, userPass)**
    user.save()

    return render_to_response('home.html', context_instance=RequestContext(request))

কোন সাহায্য?


6
কি ধরনের ব্যতিক্রম?
César

4
@ ব্যবহারকারী 1364223 ব্যতিক্রম ট্র্যাসব্যাক?
জোসেফ ভিক্টর জম্মিত

আমি মনে করি User.objects.create কাজ করা উচিত। docs.djangoproject.com/en/1.4/ref/models/querysets/#create
iJK

উত্তর:


188

জাজানোতে ব্যবহারকারী তৈরি করার সঠিক উপায় হ'ল ক্রিয়েট_উজার ফাংশনটি ব্যবহার করা। এটি পাসওয়ার্ডের হ্যাশিং ইত্যাদি পরিচালনা করবে ..

from django.contrib.auth.models import User
user = User.objects.create_user(username='john',
                                 email='jlennon@beatles.com',
                                 password='glass onion')

এই পাসওয়ার্ড হ্যাশ হবে?
mp3por

8
@ এমপি 3 পোর - হ্যাঁ সম্পূর্ণ ডকুমেন্টেশনের জন্য ডকস.ডজ্যাঙ্গোপ্রজেক্ট
en /

4
আমি কীভাবে / কোথায় এটি চালাতে পারি? আমি যদি কেবল এই কোডটি চালাই তবে আমি django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.সম্পাদনা পাই : এটি কাজ করেDJANGO_SETTINGS_MODULE=app.settings.dev python manage.py shell < register-user.py
সিটিএনরম্যান

4
আরও আধুনিক জ্যাঙ্গোর আপডেট হিসাবে, ব্যবহার করুন from django.contrib.auth import get_user_modelএবংuser = get_user_model().objects.create_user(...
মার্ক চ্যাকারিয়ান

@keithhackbarth কোন ফাইলটিতে জাঙ্গো ফাইলের কাঠামোয় আমি এই কোডটি প্রবেশ করানো উচিত?
হ্যাঙ্গন

23

আপনি কি নিশ্চিত করেছেন যে আপনি প্রকৃত মানগুলি পাস করছেন এবং না None?

from django.shortcuts import render

def createUser(request):
    userName = request.REQUEST.get('username', None)
    userPass = request.REQUEST.get('password', None)
    userMail = request.REQUEST.get('email', None)

    # TODO: check if already existed
    if userName and userPass and userMail:
       u,created = User.objects.get_or_create(userName, userMail)
       if created:
          # user was created
          # set the password here
       else:
          # user was retrieved
    else:
       # request was empty

    return render(request,'home.html')

4
যদি তারা কেউ না হয় .is_ માન્ય () পদ্ধতিটি ব্যর্থ হয়?
এমপি

11

এর সাথে বাল্ক ব্যবহারকারী তৈরি করা set_password

আমি আপনাকে বেশ কয়েকটি পরীক্ষামূলক ব্যবহারকারী তৈরি করছি, bulk_createএটি অনেক দ্রুত, তবে আমরা create_userএটি দিয়ে ব্যবহার করতে পারি না ।

set_password হ্যাশ পাসওয়ার্ড উত্পন্ন করার অন্য উপায়:

def users_iterator():
    for i in range(nusers):
        is_superuser = (i == 0)
        user = User(
            first_name='First' + str(i),
            is_staff=is_superuser,
            is_superuser=is_superuser,
            last_name='Last' + str(i),
            username='user' + str(i),
        )
        user.set_password('asdfqwer')
        yield user

class Command(BaseCommand):
    def handle(self, **options):
        User.objects.bulk_create(iter(users_iterator()))

পাসওয়ার্ড হ্যাশিং সম্পর্কিত প্রশ্ন নির্দিষ্ট: জ্যাঙ্গোতে পাসওয়ার্ড এনক্রিপ্ট করতে কীভাবে Bcrypt ব্যবহার করবেন

জ্যাঙ্গোতে পরীক্ষিত হয়েছে 9.৯৯।


4
স্বীকৃত চেয়ে অনেক ভাল; আপনি যদি প্রোগ্রামগতভাবে ব্যবহারকারী যুক্ত করার বিষয়টি বিবেচনা করছেন তবে আপনি সম্ভবত আরও ব্যবহারের জন্য কিছু স্বয়ংক্রিয় করুন।
সাওওমির লেনার্ট

5

আপনি যদি ব্যবহারকারীকে সাধারণভাবে তৈরি করেন তবে আপনি পাসওয়ার্ড তৈরির পদ্ধতি হিসাবে লগইন করতে পারবেন না তবে আপনি ডিফল্ট সাইনআপ ফর্মটি ব্যবহার করতে পারেন

from django.contrib.auth.forms import UserCreationForm

আপনি এটি প্রসারিত করতে পারেন

from django.contrib.auth.forms import UserCreationForm

class UserForm(UserCreationForm):
    mobile = forms.CharField(max_length=15, min_length=10)
    email = forms.EmailField(required=True)
    class Meta:
        model = User
        fields = ['username', 'password', 'first_name', 'last_name', 'email', 'mobile' ]

তারপরে দেখুন এই ক্লাসটি ব্যবহার করুন

class UserCreate(CreateView):
    form_class = UserForm
    template_name = 'registration/signup.html'
    success_url = reverse_lazy('list')

    def form_valid(self, form):
        user = form.save()

4
আমি মনে করি ফর্মগুলি প্রসারিত করে ইউজারফর্ম তৈরি করার সময় একটি ভুল হয়েছে od আমি মনে করি এর পরিবর্তে ইউজারক্রিয়েশনফর্মটি বাড়ানো উচিত
vladimir.gorea

এছাড়াও, ব্যবহারকারীর তৈরি ক্লাস ভিউর ফর্ম_ক্লাসটি কি ইউজারফর্ম হওয়া উচিত নয়?
vladimir.gorea
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.