Django এ ক্লাসের মতামত

Django view points to a function, which can be a problem if you want to change only a bit of functionality. Yes, I could have million keyword arguments and even more if statements in the function, but I was thinking more of an object oriented approach.

উদাহরণস্বরূপ, আমার কাছে একটি পৃষ্ঠা রয়েছে যা একটি ব্যবহারকারী প্রদর্শন করে। এই পৃষ্ঠাটি পৃষ্ঠার অনুরূপ, যা একটি গ্রুপ প্রদর্শন করে, কিন্তু এটি এখনও অন্য ডেটা মডেল ব্যবহার করার মতো নয়। গ্রুপের সদস্য ইত্যাদি ...

এক উপায় ক্লাস পদ্ধতির মতামত পয়েন্ট করা এবং তারপর যে বর্গ প্রসারিত হবে কেউ এই পদ্ধতির চেষ্টা বা অন্য কোন ধারণা আছে?

0
নিশ্চিত, ধন্যবাদ Alex আমি কিছু কিছু ভুলে যাচ্ছি। :-)
যোগ লেখক engtech, উৎস
@ জর্জ ২২: আপনি কি আপনার পুরোনো প্রশ্নগুলির পর্যালোচনা করতে পারেন এবং যেগুলি উল্লিখিত হিসাবে চিহ্নিত করা উচিত চেক করতে পারেন? আপনি যদি উত্তরগুলি গ্রহণ না করে থাকেন তবে দয়া করে আপনার প্রশ্নগুলি সম্পাদনা করুন এবং ব্যাখ্যা করুন। ধন্যবাদ !!
যোগ লেখক Alex Angas, উৎস

10 উত্তর

আমি এই একটি বিট সঙ্গে খেলেছি এবং অতীতে কিছু দরকারী নথি পাওয়া গেছে।

এতে রোবট ফোরাম দেখুন।

মূলত রোবোটের উপর 'হোম' চাকরিটি চালানোর জন্য, আপনাকে প্রতিটি অক্ষের থেকে সম্পূর্ণ অবস্থানের প্রয়োজন এবং এটি কন্ট্রোলারের ভেতরে একটি স্টিকার পাওয়া যায়। বাড়িতে অবস্থান আপনার সব রেফ তীর সাইন আপ করা উচিত।

হোম অবস্থান হারিয়ে গেছে যদি এনকোডার মেমরি হারিয়ে যায় এটি প্রতিটি বিপ্লবের জন্য 4000 পয়েন্টকে গুরুত্ব দেয় - যদি এনকোডার মেমোরিটি হারিয়ে যায় তবে এটি কতটুকু পাস করেছে তা জানে না।

নতুন এবং পুরানো এনকোডার হোম অবস্থানের মধ্যে পার্থক্যটি নিন এবং 4000 দ্বারা বিভক্ত করুন - এটি আপনাকে কতটা এটি দ্বারা বের করে দেবে

দেওয়া উদাহরণ ছিল:

মূল হোম এনকোডার গণনা: -119771 নতুন বাড়ির এনকোডার গণনা (রেফারেন্স চিহ্ন আনার পরে এবং সেই অক্ষের ডাটা সেট করার পরে): -95834 পার্থক্য: -23937 বিভক্ত 4000: 5.984২5 তাই, বিপ্লব সংখ্যা ছিল 6 আমার নতুন হোম পজিশন উচিত তারপর হতে -119771 + (6) x (4000) = -95771

4
যোগ

বিষয়বস্তু অনুসন্ধান ওয়েব পার্টটি দেখুন

3
যোগ
হ্যাঁ দুঃখিত একটি সভায় পথে দ্রুত ছিল! thx kusek
যোগ লেখক Anonymous User, উৎস
@ জর্জ আপনি এই জন্য একটি নতুন প্রশ্ন খোলার প্রয়োজন হতে পারে। কিন্তু আমি আপনাকে বিষয়বস্তু প্রশ্ন ওয়েব পার্ট জন্য এখানে উত্তর দিতে হবে। blogs.msdn.com/ecm/archive/2006/10/25/…
যোগ লেখক Isaac Moses, উৎস
ধন্যবাদ অ্যান্ডি! আপনি কি এমন একটি তালিকা তৈরি করতে "বিষয়বস্তু অনুসন্ধান ওয়েব পার্ট" ব্যবহার করতে পারেন সম্পর্কে আরও তথ্য আমাকে দেখিয়েছেন যা মূল সাইট এবং শিশু সাইট উভয়ের মধ্যে দেখানো যেতে পারে (একই সামগ্রী দেখানোর জন্য)?
যোগ লেখক engtech, উৎস

জেনেরিক দৃষ্টিভঙ্গি সাধারণত যাওয়ার উপায় হবে, কিন্তু শেষ পর্যন্ত আপনি চান ইউআরএলগুলি পরিচালনা করতে পারবেন না। ফরম উইজার্ড একটি ক্লাস-ভিত্তিক পদ্ধতিতে কাজ করে, যেমন রিস্ট্রিবল API গুলিগুলির জন্য কিছু অ্যাপ্লিকেশন।

মূলত একটি URL সঙ্গে আপনি ভেরিয়েবল একটি গুচ্ছ দেওয়া এবং একটি কলযোগ্য প্রদান করার জন্য স্থান দেওয়া হয়, আপনি সরবরাহযোগ্য কি আপনার উপর সম্পূর্ণরূপে আপ হয় - স্ট্যান্ডার্ড উপায় একটি ফাংশন প্রদান করা হয় - কিন্তু শেষ পর্যন্ত Django আপনি কি কি কোন সীমাবদ্ধতা রাখে।

আমি সম্মত নই যে কিভাবে এটি করতে হবে আরো কয়েকটি উদাহরণ ভাল হবে, ফরমউইজার সম্ভবত সম্ভবত শুরু করার জায়গা।

0
যোগ

আমি তৈরি করেছি এবং আমার নিজস্ব জেনেরিক ভিউ ক্লাস ব্যবহার করেছি, __ কল __ </কোড> সংজ্ঞায়িত করেছি যাতে ক্লাসের একটি উদাহরণ কলযোগ্য। আমি সত্যিই এটা পছন্দ করি; যেহেতু Django এর জেনেরিক মতামত কীওয়ার্ড আর্গুমেন্টের মাধ্যমে কিছু কাস্টমাইজেশন দেয়, OO জেনেরিক মতামত (যদি তাদের আচরণগুলি বিভিন্ন পদ্ধতিতে বিভক্ত হয়) উপসংহারের মাধ্যমে আরও সূক্ষ্ম সুগঠিত কাস্টমাইজেশন করতে পারে, যা আমাকে অনেক কম পুনরাবৃত্তি করতে দেয় (আমি জাভা এর জেনেরিক মতামত মোটামুটি অনুমতি দেয় না কিছু কিছু tweak করার প্রয়োজন আমি তৈরি / আপডেট ভিউ যুক্তি পুনর্বিন্যাস করা ক্লান্ত পেতে)।

আমি djangosnippets.org এ কিছু কোড পোস্ট করেছি।

আমি দেখতে শুধুমাত্র বাস্তব হ্রাস অভ্যন্তরীণ পদ্ধতি কল এর বিস্তার হয়, যা কার্যক্ষমতা কিছুটা প্রভাবিত হতে পারে। আমি মনে করি না এটি একটি উদ্বেগের বিষয়; এটা বিরল যে পাইথন কোড এক্সিকিউশন একটি ওয়েব অ্যাপ্লিকেশন আপনার কর্মক্ষমতা বক্ররেখার হবে।

UPDATE: Django's own generic views are now class-based.

UPDATE: FWIW, I've changed my opinion on class-based views since this answer was written. After having used them extensively on a couple of projects, I feel they tend to lead to code that is satisfyingly DRY to write, but very hard to read and maintain later, because functionality is spread across so many different places, and subclasses are so dependent on every implementation detail of the superclasses and mixins. I now feel that TemplateResponse and view decorators is a better answer for decomposing view code.

0
যোগ
পাইথন এক্সিকিউশন বিচ্ছিন্নতা নয়, তবে সাইটটির স্থায়িত্বকে প্রভাবিত করে, এবং সামগ্রিকভাবে কর্মক্ষমতা। আমি খুব আনন্দিত memcache বিদ্যমান!
যোগ লেখক StefanNch, উৎস

আপনি যদি পৃষ্ঠাগুলির মধ্যে সাধারণ কার্যকারিতা ভাগ করতে চান তবে আমি আপনাকে কাস্টম ট্যাগগুলি দেখানোর পরামর্শ দিচ্ছি। তারা বেশ তৈরি করা সহজ , এবং খুব ক্ষমতাশালী.

এছাড়াও, টেমপ্লেটগুলি অন্যান্য টেম্পলেটগুলি থেকে প্রসারিত হতে পারে এটি আপনাকে পৃষ্ঠার লেআউট সেট আপ করার জন্য একটি বেস টেমপ্লেট ধারণ করতে এবং এইগুলি অন্য টেমপ্লেটগুলির মধ্যে ভাগ করার অনুমতি দেয় যা শূন্যগুলি পূরণ করে। আপনি কোন গভীরতায় টেমপ্লেট ঘুরে বেড়াতে পারেন; আপনি এক জায়গায় সংশ্লিষ্ট পৃষ্ঠাগুলির পৃথক গোষ্ঠীতে লেআউটটি নির্দিষ্ট করার অনুমতি দিয়েছেন।

0
যোগ
আমি টেমপ্লেট মধ্যে খুব যুক্তি নির্বাণ মনে হয় না একটি ভাল ধারণা।
যোগ লেখক Attila O., উৎস

আপনি একটু জটিল কিছু করতে চান না, জেনেরিক মতামত ব্যবহার করে যেতে উপায় হয়। তারা তাদের নামের তুলনায় আরো শক্তিশালী হয় বোঝা যায়, এবং আপনি শুধু মডেল তথ্য জেনেরিক মতামত প্রদর্শিত হলে কাজ করবে।

0
যোগ

আপনি যদি কেবল মডেল থেকে ডেটা প্রদর্শন করছেন তবে কেন Django Generic Views ব্যবহার করবেন না ? তারা আপনার মডেলকে ডেটা প্রদর্শন, তথ্য আদান-প্রদান, প্রান্তের ক্ষেত্রে হস্তান্তর, আউটপুট রেন্ডারিং, ইত্যাদি বিষয়ে ম্যাপিং URL প্যারামিটার সম্পর্কে আপনার নিজস্ব দর্শন এবং সামগ্রী লিখতে না পারলে আপনাকে একটি মডেল থেকে ডেটা দেখানোর জন্য ডিজাইন করা হয়েছে।

0
যোগ

আপনি সবসময় একটি বর্গ তৈরি করতে পারেন, __ কল __ ফাংশনটি ওভাররাইড করে এবং তারপর URL ফাইলটি ক্লাসের একটি উদাহরণে নির্দেশ করুন। আপনি ফরম উইজার্ড এর দিকে নজর দিতে পারেন ক্লাস কিভাবে এই কাজ করা হয় তা দেখতে।

0
যোগ
মার্কআপ প্রসেসর আপনার __ এর গুলি খেয়েছে মার্কআপ লুকানোর জন্য \ _ ব্যবহার করুন ক্লাস __ কুল__ পদ্ধতিটি কি বলা হয়। সমস্যাটি নিশ্চিত করা উচিত যে urls.py এর জন্য উপলব্ধ ক্লাসের একটি উদাহরণ আছে। এটি আপনার urls.py আরো কিছু জটিল করে তোলে।
যোগ লেখক S.Lott, উৎস

আমি শ্রেণী ভিত্তিক মতামত ব্যবহার করতে চেয়েছিলাম, কিন্তু আমি এটি ব্যবহার করার আগে সর্বদা সর্বদা ভিউ শ্রেণিকে তাত্ক্ষণিকভাবে ব্যবহার না করেই আমার ইউআরএলconfে ক্লাসের পুরো নাম ব্যবহার করতে চেয়েছিলাম। কি আমাকে সাহায্য একটি আশ্চর্যজনক সহজ metaclass ছিল:

class CallableViewClass(type):
    def __call__(cls, *args, **kwargs):
        if args and isinstance(args[0], HttpRequest):
            instance = super(CallableViewClass, cls).__call__()
            return instance.__call__(*args, **kwargs)
        else:
            instance = super(CallableViewClass, cls).__call__(*args, **kwargs)
            return instance


class View(object):
    __metaclass__ = CallableViewClass

    def __call__(self, request, *args, **kwargs):
        if hasattr(self, request.method):
            handler = getattr(self, request.method)
            if hasattr(handler, '__call__'):
                return handler(request, *args, **kwargs)
        return HttpResponseBadRequest('Method Not Allowed', status=405)

আমি এখন উভয় দেখুন ক্লাস উভয় তাত্পর্য এবং দেখুন ফাংশন হিসাবে উদাহরণ ব্যবহার করতে পারেন, অথবা আমি কেবল আমার বর্গ আমার URLconfirm পয়েন্ট করতে পারেন এবং metaclass তাত্ক্ষণিক (এবং কল) আমার জন্য দেখুন বর্গ আছে __ কল __ এর প্রথম যুক্তিটি পরীক্ষা করে কাজ করে? যদি এটি HttpRequest হয় তবে এটি একটি প্রকৃত HTTP অনুরোধ হওয়া আবশ্যক কারণ এটি একটি HttpRequest উদাহরণ সহ একটি দৃশ্য শ্রেণিকে তাত্পর্যপূর্ণ করার জন্য অকথ্য হবে।

class MyView(View):
    def __init__(self, arg=None):
        self.arg = arg
    def GET(request):
        return HttpResponse(self.arg or 'no args provided')

@login_required
class MyOtherView(View):
    def POST(request):
        pass

# And all the following work as expected.
urlpatterns = patterns(''
    url(r'^myview1$', 'myapp.views.MyView', name='myview1'),
    url(r'^myview2$', myapp.views.MyView, name='myview2'),
    url(r'^myview3$', myapp.views.MyView('foobar'), name='myview3'),
    url(r'^myotherview$', 'myapp.views.MyOtherView', name='otherview'),
)

(আমি এই জন্য একটি স্নিপেট পোস্ট করেছেন http://djangosnippets.org/snippets/2041/ )।

0
যোগ
বেশ আক্ষরিক ভয়ঙ্কর
যোগ লেখক Anentropic, উৎস

আপনি Django জেনেরিক দৃশ্য ব্যবহার করতে পারেন। আপনি সহজেই কাঙ্ক্ষিত কার্যকারিতা পুঙ্খানুপুঙ্খ Django জেনেরিক দৃশ্যগুলি অর্জন করতে পারেন

0
যোগ