جانغو التطبيق التي يمكن أن توفر المستخدم ودية متعددة / كتلة تحميل الملف وظائف تطبيقات أخرى

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

  •  06-07-2019
  •  | 
  •  

سؤال

أنا ذاهب إلى أن نكون صادقين:هذا هو السؤال الذي سألته في جانغو-المستخدمين mailinglist الأسبوع الماضي.حيث لم تحصل على أي ردود حتى الآن, أنا إعادة نشر على تجاوز سعة مكدس على أمل أن يحصل على المزيد من الاهتمام هنا.

أريد إنشاء التطبيق الذي يجعل من السهل القيام به المستخدم ودية ، متعددة / كتلة تحميل الملفات في التطبيقات الخاصة بك.مع الاستعمال انا يعني تحميل مثل Gmail, فليكر, ...حيث يمكن للمستخدم تحديد عدة الملفات دفعة واحدة في تصفح ملف الحوار.الملفات ثم تحميلها بالتتابع أو بالتوازي لمحة لطيفة من الملفات المحددة يظهر على الصفحة مع شريط تقدم بجانبها.A 'إلغاء' زر التحميل هو أيضا خيار ممكن.

كل هذا اللطف عادة ما يتم حلها باستخدام فلاش الكائن.كاملة الحلول هناك جانب العميل ، مثل:SWFUpload http://swfupload.org/ , FancyUpload http://digitarald.de/project/fancyupload/ , YUI 2 رافع http://developer.yahoo.com/yui/uploader/ وربما العديد من أكثر.

طبعا الخدعة تلك الحلول المتكاملة في المشروع.لا سيما في إطار مثل Django, مزدوج حتى إذا كنت تريد أن تكون قابلة لإعادة الاستخدام.

لدي بعض الأفكار ولكني لست خبيرا في جانغو ولا على على أساس فلاش تحميل حلول.سوف أشارك أفكاري هنا في أمل الحصول على بعض ردود الفعل من أكثر دراية وخبرة الناس.(أو حتى مجرد بعض 'أريد هذا أيضا!' الردود :) )

ستلاحظ أن أقوم بإجراء بعض الافتراضات:هذا هو الحفاظ على (الأولي) نطاق التطبيق تحت السيطرة.هذه الافتراضات هي بالطبع قابلة للنقاش:

حسنا, فكرتي حتى الآن:

  • إذا كنت ترغب في كتلة تحميل ملفات متعددة ، وأنت تسير أن يكون نموذج يحتوي كل ملف في.أولا-هاء.النموذج وسوف تحتوي على واحد FileField أو أحد ImageField.نماذج متعددة (ولكن بالطبع محدود) كمية FileFields/ ImageFields ليسوا في حاجة إلى سهل التحميل الجماهيري imho:إذا كان لديك نموذج مع 100 FileFields كنت تفعل شيئا خاطئا :) أمثلة حيث كنت تريد تصور نوع من كتلة تحميل:

    • التطبيق يحتوي فقط نموذج واحد 'كتيب' مع ملف الميدانية ، حقل العنوان (تم إنشاؤه بشكل حيوي من الملف) و date_added الحقل.
    • معرض صور التطبيق مع نماذج 'معرض الصور' و 'الصور'.يمكنك اختيار معرض لإضافة الصور, تحميل الصور و صور جديدة الكائنات يتم إنشاء مفاتيح خارجية تعيين المختار معرض.
  • سيكون من الجميل أن تكون قادرة على تكوين أو تمديد التطبيق الخاص بك المفضلة تحميل فلاش الحل.يمكننا اختيار واحد من الثلاثة أعلاه ، افتراضي ، ولكن تنفيذ التطبيق حتى أن الناس يمكن بسهولة إضافة إضافية تطبيقات (مثل Django يمكن استخدام متعددة قواعد البيانات).فليكن الملحد إلى أي جانب العميل الحل.

  • إذا نحن بحاجة إلى اختيار واحد أن تبدأ مع ، ربما اختيار واحد مع أصغر البصمة ؟ (أصغر تحميل من جانب العميل الاشياء)

  • فلاش على الحلول بشكل غير متزامن (و إما بالتتابع أو بالتوازي) نشر الملفات إلى عنوان url.أقترح أن عنوان url إلى المحلية إلى عامة التطبيق (حتى انها نفس كل التطبيق حيث يمكنك استخدام لدينا التطبيق في).هذا العنوان سوف تذهب إلى view التي يقدمها عامة التطبيق.

  • عرض سيتم القيام بما يلي:إنشاء نموذج جديد على سبيل المثال ، إضافة ملف اختياريا تفعل الاشياء الاضافية وحفظ سبيل المثال.

  • هل الاشياء الاضافية هو رمز التطبيق الذي يستخدم التطبيق لدينا يريد تشغيل.فإنه لا يجب تقديم أي رمز إضافية ، إذا كان النموذج فقط FileField/ImageField القياسية عرض التعليمات البرمجية سيتم القيام بهذه المهمة.ولكن الأهم التطبيق سوف تريد أن تفعل الأشياء الإضافية أعتقد مثل ملء الحقول الأخرى:العنوان date_added, foreignkeys, manytomany, ...

  • أنا لم أفكر في آلية تفعل الأشياء الإضافية.فقط التفاف عامة التطبيق عرض تتبادر إلى الذهن ، ولكن ليس هذا هو المطور ودية منذ سيكون لديك لكتابة url الخاصة بك ونمط حياتك الشخصي.ثم عليك أن تخبر فلاش حلول استخدام عنوان url جديد الخ...أعتقد أن شيئا مثل إشارات يمكن استخدامها هنا ؟

  • أشكال/المشرف:أنا لا تزال سطحية جدا على كيف كل هذا يمكن أن يكون أفضل المتكاملة في الادارة العامة أو جانغو أشكال/الحاجيات/...(و هذا هو لي عدم وجود جانغو وتبين التجربة):

    • في حالة معرض/صور التطبيق:هل يمكن أن تقدم كتلة تحميل الصور القطعة في معرض التفصيل شكل.ولكن ماذا لو كان معرض سبيل المثال لم يتم حفظها حتى الآن ؟ الملف تحميل عرض لن تكون قادرة على ضبط foreignkeys على الصورة حالات.أرى أن مصادقة التطبيق ، عند إنشاء مستخدم يسأل أولا للحصول على اسم المستخدم وكلمة المرور وبعد ذلك فقط يوفر لك أكبر نموذج تعبئة emailadres, اختيار الأدوار.... الخيمكننا أن نفعل شيئا مثل أن.
    • في حالة التطبيق فقط مع نموذج واحد:كيف يمكنك تقديم نموذج في جانغو الادارة للقيام الشامل تحميل ؟ لا يمكنك أن تفعل ذلك مع التفصيل شكل النموذج الخاص بك ، فقط نموذج واحد على سبيل المثال.

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

شكرا لك!

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

المحلول

لقد صدر للتو التطبيق بسيطة عن هذا قبل حوالي شهر: جانغو-uploadify.

انها في الأساس جانغو قالب الوسم بمثابة التفاف على أنيق جدا Uploadify (يتطلب مسج).استخدام بسيط مثل هذا إضافة إلى القالب الخاص بك...

{% load uploadify_tags }{% multi_file_upload ‘/upload/complete/url/’ %}

العلامة النار الأحداث (1 في الملف) على كل من العميل والخادم الجانب (جانغو إشارة) للإشارة عندما واردة وقد وردت الملف.

على سبيل المثال ، على افتراض لديك نموذج 'وسائل الإعلام' الذي يعالج جميع المستخدم الملفات التي تم تحميلها...

def upload_received_handler(sender, data, **kwargs):
    if file:
        new_media = Media.objects.create(
            file = data,
            new_upload = True,
        )
        new_media.save()

upload_recieved.connect(upload_received_handler, dispatch_uid=‘whatever.upload_received’)

تحقق من ويكي للحصول على معلومات حول كيفية إعداده و إنشاء معالجات الإشارات (client/server).


عن تطبيق مفاهيم من فوق هنا بضع نقاط من النظر:

  • وجود التطبيق تلقائيا إنشاء "ملف نموذج" المثال ربما ليست قوية مثل الناس قد نماذج خاصة بهم انهم يعملون مع
  • إذا كنت ترغب في تنفيذ أي نوع من الأمن أو المصادقة تحتاج نظام مفتوح و أقل من السيارات-خلق نوع
  • أعتقد إشارات/الأحداث هي الطريقة للتعامل مع هذا, و أيضا التعامل مع 'فعل أمور أخرى' جزء من ما ذكرت.
  • كان استنتاجي بأن متعددة تحميل يمكن أبدا أن تكون على شكل القطعة بمعنى أن جانغو تنفذ شكل الحاجيات.1 ملف من المرجح أن تكون ممثلة 1 نموذج سبيل المثال (مع بعض الاستثناءات) ، وهو ما يعني أننا في نهاية المطاف مع الحالة التي يكون فيها 1 القطعة يمكن أن تمثل N نموذج الحالات.ومع ذلك جانغو هو الإعداد بحيث القطعة تمثل 1 القيمة 1 الميدانية في 1 سبيل المثال.انها فقط لا تناسب الغالبية العظمى من حالات الاستخدام أن يكون ذلك باعتباره القطعة (وبالتالي لماذا ذهبت القالب الوسم الطريق).
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top