كيفية إرسال رسالة الجلسة لمستخدم مجهول في موقع جانغو؟

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

سؤال

وأنا غالبا ما تظهر رسائل حول إجراءات المستخدم إلى تسجيل الدخول للمستخدمين في وجهات النظر التطبيق جانغو الخاص بي باستخدام:

request.user.message_set.create("message to user")

وكيف يمكن أن أفعل نفس الشيء للمجهول (لم تقم بتسجيل الدخول) للمستخدمين؟ ليس هناك request.user للمستخدمين المجهولين، ولكن وثائق جانغو يقول أن استخدام "جلسة" الوسيطة يمكنك أن تفعل الشيء نفسه رمز أعلاه. وثائق جانغو التي تربط الوسيطة جلسة تدعي أنه من الممكن، ولكن لم أتمكن من العثور على كيفية القيام بذلك من وثائق الدورة.

هل كانت مفيدة؟

المحلول

http://code.google.com/p/django-session -messages / حتى التصحيح التي تمكن جلسة تستند الرسائل الأراضي في شجرة جانغو (كما رأيت في الآونة الأخيرة، هو وضع علامة 1.2، لذلك لا أمل لإضافة سريعة ...).

وهناك مشروع آخر مع وظائف مماثلة هو جانغو فلاش ( http://djangoflash.destaquenet.com/ ) .

نصائح أخرى

وهذا هو ما أقوم به، وذلك باستخدام المعالجات السياق:

وproject/application/context.py (التحقق من الرسائل وإضافتها إلى السياق):

def messages(request):
    messages = {}
    if 'message' in request.session:
        message_type = request.session.get('message_type', 'error')
        messages = {'message': request.session['message'],
                    'message_type': message_type}
        del request.session['message']
        if 'message_type' in request.session:
            del request.session['message_type']
    return messages

وproject/settings.py (إضافة السياق إلى TEMPLATE_CONTEXT_PROCESSORS):

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.request",
    "django.core.context_processors.debug",
    "django.core.context_processors.media",
    "django.core.context_processors.auth",
    "project.application.context.messages",  
)

ومع وسوف يطلق على فوق messages الدالة على كل طلب وبكل ما يعود ستضاف إلى سياق القالب. مع هذا في مكان، إذا كنت تريد أن تعطي للمستخدم رسالة، ويمكن القيام بذلك:

def my_view(request):
    if someCondition:
        request.session['message'] = 'Some Error Message'

وأخيرا، في قالب يمكنك التحقق فقط إذا كان هناك أخطاء لعرض:

{% if message %}
    <div id="system_message" class="{{ message_type }}">
        {{ message }}
    </div>
{% endif %}

ويستخدم نوع الرسالة فقط إلى أسلوب اعتمادا على ما هو عليه ( "خطأ"، "لاحظ"، "النجاح") والطريقة أن هذا هو الإعداد يمكنك فقط إضافة 1 رسالة في وقت لمستخدم، ولكن هذا هو كل ما تحتاج حقا من أي وقت مضى بالنسبة لي كان يعمل. انه يمكن تغييره بسهولة للسماح للرسائل متعددة وكذا.

وتخزين البيانات مباشرة في الدورة، وهو كائن يشبه ديكت. ثم في عرض / قالب، تحقق للقيمة.

ومزيد من المعلومات هنا:

HTTP: // مستندات. djangoproject.com/en/dev/topics/http/sessions/#using-sessions-in-views

ويمكنك أيضا إنشاء فئة الوسيطة للتحقق من كائن جلسة عمل على كل طلب، والقيام بناء الخاص بك / هدم هناك.

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