بعض الاسئلة عن ما معني uid , uidb64 وماذا تفعل عن استخدامها في الاختبارات

اريد ان اعرف ما معني uid و uidb64 في هذا السطر من دالة الاختبار هذه :

class PasswordResetConfirmTests(TestCase):
def setUp(self):
    user = User.objects.create_user(username='john', email='[email protected]', password='123abcdef')

    '''
    create a valid password reset token
    based on how django creates the token internally:
    https://github.com/django/django/blob/1.11.5/django/contrib/auth/forms.py#L280
    '''
    self.uid = urlsafe_base64_encode(force_bytes(user.pk)).decode()
    self.token = default_token_generator.make_token(user)

    url = reverse('password_reset_confirm', kwargs={'uidb64': self.uid, 'token': self.token})
    self.response = self.client.get(url, follow=True)


    def test_view_function(self):
        view = resolve('/reset/{uidb64}/{token}/'.format(uidb64=self.uid, token=self.token))
        self.assertEquals(view.func.view_class, auth_views.PasswordResetConfirmView)

واريد انا اعرف ماذا يحدث للرابط في هذا الاختبار, انا اعرف الهدف من هذا الاختبار وهو التأكد من ان دالة الـ View توافق الرابط وتتأكد من صحتها, اريد انا اعرف ماذا تعمل الـ uid, uidb64 في دالة التعريف .

2 Likes

@hichem2h اخي

1 Like

بالنسبة ل uid فهو اختصار user id

اما uidb64 فهو نفسه ال user id لكن على شكل base 64

ماهو base64؟

ببساطة هي طريقة لعرض البيانات.

  • الاسم العلمي لها هو: ترميز (encoding)

عن طريق التلاعب بال bits، هذه صورة توضح كيفية عمل encoding لكلمة ASD

العملية العكسية تسمى decoding

السؤال الاهم: لماذا نحتاج base64؟

السبب الاهم هو الاحتفاظ بالبيانات

بمعنى هذا الترميز لا يستعمل special characters مثل / أو !

لو عندنا كلمة moha+abdo، وظيفة الترميز base64 هو ان يضمن انه البيانات سيتم تمريرها بدون تضييع الرمز +

4 Likes

شكراا علي الرد اخي ياسر :sweat_smile:

1 Like