উত্তর:
আমি কেবল নিজের থেকে একটি টিপ দিয়ে শুরু করতে যাচ্ছি :)
হার্ডকোডড ডাইরনামগুলি এড়াতে সেটিংস.পিটিতে os.path.dirname () ব্যবহার করুন।
আপনি যদি আপনার প্রকল্পটি বিভিন্ন জায়গায় চালাতে চান তবে আপনার সেটিংসে হার্ডকোড পাথ করবেন না py আপনার টেমপ্লেট এবং স্ট্যাটিক ফাইলগুলি জাঙ্গো প্রকল্প ডিরেক্টরিতে অবস্থিত থাকলে সেটিংসে.পিতে নিম্নলিখিত কোডটি ব্যবহার করুন:
# settings.py
import os
PROJECT_DIR = os.path.dirname(__file__)
...
STATIC_DOC_ROOT = os.path.join(PROJECT_DIR, "static")
...
TEMPLATE_DIRS = (
os.path.join(PROJECT_DIR, "templates"),
)
ক্রেডিট: স্ক্রিনকাস্ট ' জ্যাঙ্গো ফ্রম দ্য গ্রাউন্ড আপ ' থেকে আমি এই টিপটি পেয়েছি ।
j = lambda filename: os.path.join(PROJECT_DIR, filename)
। তারপরে আপনার শুধু টাইপ করা দরকার j("static")
।
wontfix
।
জ্যাঙ্গো কমান্ড এক্সটেনশানগুলি এবং পাইগ্রাভিজ ইনস্টল করুন এবং তারপরে সত্যিই দুর্দান্ত দেখাচ্ছে জ্যাঙ্গো মডেলের ভিজ্যুয়ালাইজেশন পেতে নিম্নলিখিত কমান্ডটি জারি করুন:
./manage.py graph_models -a -g -o my_project.png
ব্যবহারের জ্যাঙ্গো-বিরক্তিকর render_to
পরিবর্তে প্রসাধক render_to_response
।
@render_to('template.html')
def foo(request):
bars = Bar.objects.all()
if request.user.is_authenticated():
return HttpResponseRedirect("/some/url/")
else:
return {'bars': bars}
# equals to
def foo(request):
bars = Bar.objects.all()
if request.user.is_authenticated():
return HttpResponseRedirect("/some/url/")
else:
return render_to_response('template.html',
{'bars': bars},
context_instance=RequestContext(request))
এটি চিহ্নিত করার জন্য সম্পাদনা করা হয়েছে যে কোনও এইচটিপিআরস্পোনস (যেমন একটি পুনর্নির্দেশ) ফেরত দেওয়ালীর শর্ট সার্কিট করবে এবং আপনার প্রত্যাশা অনুসারে কাজ করবে।
কাস্টম ট্যাগগুলির একটি সেট রয়েছে যা আমি আমার সাইটের টেমপ্লেট জুড়ে ব্যবহার করি। এটি অটোলাড করার কোনও উপায় খুঁজছেন (ডিআরওয়াই, মনে আছে?), আমি নিম্নলিখিতগুলি পেয়েছি:
from django import template
template.add_to_builtins('project.app.templatetags.custom_tag_module')
আপনি যদি এটি কোনও ডিফল্টরূপে লোড হওয়া মডিউলে রাখেন (উদাহরণস্বরূপ আপনার মূল urlconf), আপনি ব্যবহার না করে কোনও টেমপ্লেটে আপনার কাস্টম ট্যাগ মডিউল থেকে উপলব্ধ ট্যাগ এবং ফিল্টার পাবেন {% load custom_tag_module %}
।
আর্গুমেন্টটি template.add_to_builtins()
যে কোনও মডিউল পাথ হতে পারে; আপনার কাস্টম ট্যাগ মডিউল একটি নির্দিষ্ট অ্যাপ্লিকেশন বাস করতে হবে না। উদাহরণস্বরূপ, এটি আপনার প্রকল্পের মূল ডিরেক্টরিতে (উদাহরণস্বরূপ 'project.custom_tag_module'
) মডিউলও হতে পারে ।
ভার্চুয়ালেনভ + পাইথন = লাইফ সেভার যদি আপনি একাধিক জ্যাঙ্গো প্রকল্পে কাজ করছেন এবং এমন সম্ভাবনা রয়েছে যে তারা সকলেই জ্যাঙ্গো / অ্যাপ্লিকেশনটির একই সংস্করণের উপর নির্ভর করে না।
virtualenv myNewEnv --no-site-packages
; . myNewEnv/bin/activate
; pip install django
; এবং এটি ঠিক কাজ করে!
আপনার ইউআরএলগুলি হার্ড-কোড করবেন না!
পরিবর্তে ইউআরএল নামগুলি , এবং reverse
URL টি নিজেই পেতে ফাংশনটি ব্যবহার করুন ।
আপনি যখন আপনার ইউআরএল ম্যাপিংগুলি সংজ্ঞায়িত করেন তখন আপনার ইউআরএলগুলিতে নাম দিন।
urlpatterns += ('project.application.views'
url( r'^something/$', 'view_function', name="url-name" ),
....
)
নিশ্চিত হয়ে নিন যে URL প্রতি নামটি অনন্য।
আমার কাছে সাধারণত একটি সুসংগত ফর্ম্যাট থাকে "প্রজেক্ট-অ্যাপ্লিকেশন-ভিউ", যেমন থ্রেড দৃশ্যের জন্য "সিবিএক্স-ফোরাম-থ্রেড"।
আপডেট (নির্লজ্জভাবে আয়াজের সংযোজন চুরি করা ):
এই নামটি url
ট্যাগ সহ টেম্পলেটগুলিতে ব্যবহার করা যেতে পারে ।
url
ট্যাগটি ব্যবহার করেন না ... তাঁর বক্তব্য হ'ল ইউআরএলগুলি যে কোনওভাবেই পরিবর্তন করা উচিত নয় (যদি আপনি আপনার সাথে বন্ধুত্বপূর্ণ হতে চান তবে ব্যবহারকারী)।
{% url path.to.view.name arg1 arg2 %}
ডকস.জেঞ্জোপ্রজেক্ট
reverse
মতো যুক্ত করুন environment.filters['url'] = django.core.urlresolvers.reverse
এবং আপনি এটির মতো টেমপ্লেটগুলিতেও এটি ব্যবহার করতে পারেন: {{ 'view-name'|url(arg1, arg2)|e }}
(এইচটিএমএল অন্তর্ভুক্তির জন্য কিছু অক্ষর থেকে বাঁচতে "ই" প্রয়োজন)
জ্যাঙ্গো ডিবাগ টুলবার ব্যবহার করুন । উদাহরণস্বরূপ, এটি ভিউ রেন্ডার করার সময় সম্পাদিত সমস্ত এসকিউএল কোয়েরিগুলি দেখতে দেয় এবং আপনি এগুলির যে কোনওটির জন্য স্ট্যাকট্রেসও দেখতে পারেন।
আপনার নিজের লগইন পৃষ্ঠা লিখবেন না। আপনি যদি django.contrib.auth ব্যবহার করছেন।
আসল, নোংরা রহস্যটি হ'ল আপনি যদি django.contrib.admin, এবং django.template.loaders.app_directories.load_template_source আপনার টেম্পলেট লোডারে রাখেন তবে আপনি নিজের টেম্পলেটগুলিও বিনামূল্যে পেতে পারেন!
# somewhere in urls.py
urlpatterns += patterns('django.contrib.auth',
(r'^accounts/login/$','views.login', {'template_name': 'admin/login.html'}),
(r'^accounts/logout/$','views.logout'),
)
বলুন আপনার আলাদা ব্যবহারকারী মডেল রয়েছে এবং আপনি প্রতিটি প্রতিক্রিয়ায় এটি অন্তর্ভুক্ত করতে চান। এটি করার পরিবর্তে:
def myview(request, arg, arg2=None, template='my/template.html'):
''' My view... '''
response = dict()
myuser = MyUser.objects.get(user=request.user)
response['my_user'] = myuser
...
return render_to_response(template,
response,
context_instance=RequestContext(request))
প্রসঙ্গ প্রক্রিয়াগুলি আপনাকে আপনার টেমপ্লেটগুলিতে কোনও পরিবর্তনশীল পাস করার ক্ষমতা দেয় ability আমি সাধারণত আমার মধ্যে রাখি 'my_project/apps/core/context.py
:
def my_context(request):
try:
return dict(my_user=MyUser.objects.get(user=request.user))
except ObjectNotFound:
return dict(my_user='')
আপনার settings.py
সাথে নিম্নলিখিত লাইনটি যুক্ত করুনTEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS = (
'my_project.apps.core.context.my_context',
...
)
এখন প্রতিবার একটি অনুরোধ করা হলে এতে my_user
স্বয়ংক্রিয়ভাবে কীটি অন্তর্ভুক্ত থাকে ।
আমি কয়েক মাস আগে এই সম্পর্কে একটি ব্লগ পোস্ট লিখেছিলাম তাই আমি কেবল কাটা এবং পেস্ট করতে যাচ্ছি:
বাক্সের বাইরে জ্যাঙ্গো আপনাকে কয়েকটি সংকেত দেয় যা অবিশ্বাস্যভাবে কার্যকর। আপনার কাছে সংরক্ষণের আগে, পোস্ট করার আগে, পোস্ট করতে, মুছতে, বা অনুরোধটি প্রক্রিয়া করা হচ্ছে এমন কি করার ক্ষমতা রয়েছে। সুতরাং ধারণাগুলি থেকে দূরে সরে আসুন এবং এগুলি কীভাবে ব্যবহৃত হয় তা প্রদর্শিত হবে। বলুন আমরা একটি ব্লগ পেয়েছি
from django.utils.translation import ugettext_lazy as _
class Post(models.Model):
title = models.CharField(_('title'), max_length=255)
body = models.TextField(_('body'))
created = models.DateTimeField(auto_now_add=True)
সুতরাং কোনওভাবেই আমরা একটি নতুন পোস্ট তৈরি করেছি, সাম্প্রতিক পোস্টের ক্যাশেটি পুনর্নির্মাণ করেছি এবং এটি সম্পর্কে টুইট করেছি blog ভাল সংকেত সহ পোস্ট ক্লাসে কোনও পদ্ধতি যুক্ত না করেই আপনি এগুলি করার সমস্ত ক্ষমতা রাখেন।
import twitter
from django.core.cache import cache
from django.db.models.signals import post_save
from django.conf import settings
def posted_blog(sender, created=None, instance=None, **kwargs):
''' Listens for a blog post to save and alerts some services. '''
if (created and instance is not None):
tweet = 'New blog post! %s' instance.title
t = twitter.PostUpdate(settings.TWITTER_USER,
settings.TWITTER_PASSWD,
tweet)
cache.set(instance.cache_key, instance, 60*5)
# send pingbacks
# ...
# whatever else
else:
cache.delete(instance.cache_key)
post_save.connect(posted_blog, sender=Post)
সেখানে আমরা সেই ফাংশনটি সংজ্ঞায়িত করে এবং পোস্ট-মডেলটির সাথে ফাংশনটি সংযুক্ত করতে পোস্ট_আইনাইট সংকেত ব্যবহার করে এবং এটি সংরক্ষণ করার পরে এটি কার্যকর করি।
যখন আমি শুরু করছিলাম, আমি জানতাম না যে একজন প্যাগেইনেটর ছিলেন , নিশ্চিত হন যে আপনি এর অস্তিত্ব সম্পর্কে জানেন!
ব্যবহারের IPython IPython শক্তি ব্যবহার করে যে কোনও স্তর এবং ডিবাগ এ আপনার কোড মধ্যে তিড়িং লাফ করতে। একবার আপনি আইপিথন ইনস্টল করার পরে যেখানেই আপনি ডিবাগ করতে চান সেখানে এই কোডটি প্রবেশ করুন:
from IPython.Shell import IPShellEmbed; IPShellEmbed()()
তারপরে পৃষ্ঠাটি রিফ্রেশ করুন, আপনার রানসারভার উইন্ডোতে যান এবং আপনি একটি ইন্টারেক্টিভ আইপিথন উইন্ডোতে থাকবেন।
আমি টেক্সটমেটে একটি স্নিপেট সেট আপ করেছি যাতে আমি কেবল আইপশেল টাইপ করি এবং ট্যাবটি হিট করি। আমি ছাড়া বাঁচতে পারি না।
ipdb
এবং তারপরে কেবল টাইপ করুনipdb.set_trace()
একটি বিকাশ এসএমটিপি সার্ভার চালান যা এতে যা কিছু প্রেরিত হয় কেবল তা আউটপুট করে (আপনি যদি সত্যই আপনার ডেভ সার্ভারে এসএমটিপি ইনস্টল করতে না চান।)
কমান্ড লাইন:
python -m smtpd -n -c DebuggingServer localhost:1025
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
.. এটি manage.py
আউটপুটটিতে ইমেলটি প্রিন্ট করবে ।
থেকে জ্যাঙ্গো-অ্যাডমিন ডকুমেন্টেশন :
আপনি যদি শ্যাশ শেল ব্যবহার করেন তবে জ্যাঙ্গো ব্যাশ সমাপ্তি স্ক্রিপ্টটি ইনস্টল করার বিষয়টি বিবেচনা করুন যা extras/django_bash_completion
জাঙ্গো বিতরণে থাকে। এটি ট্যাব-সমাপ্তি django-admin.py
এবং manage.py
আদেশগুলি সক্ষম করে, যাতে আপনি উদাহরণস্বরূপ ...
django-admin.py
।sql
যাদের নাম দিয়ে শুরু হয় এমন সমস্ত উপলভ্য বিকল্প দেখতে, টাইপ করুন [তারপরে] sql
।./manage.py runserver_plus
Facilty যা দিয়ে আসে django_extensions সত্যিই সন্ত্রস্ত।
এটি একটি বর্ধিত ডিবাগ পৃষ্ঠা তৈরি করে যা অন্যান্য জিনিসের মধ্যে, স্ট্যাকের প্রতিটি পয়েন্টের জন্য ইন্টারেক্টিভ ডিবাগিং কনসোলগুলি তৈরি করতে স্ক্রিনশটটি দেখুন (স্ক্রিনশট দেখুন) ze এটি dump()
কোনও অবজেক্ট / ফ্রেম সম্পর্কিত তথ্য প্রদর্শনের জন্য খুব দরকারী সুবিধাজনক ডিবাগিং পদ্ধতিও সরবরাহ করে ।
ইনস্টল করতে, আপনি পিপ ব্যবহার করতে পারেন:
pip install django_extensions
pip install Werkzeug
তারপরে 'django_extensions'
আপনার INSTALLED_APPS
টিপলটিতে যুক্ত করুন settings.py
এবং নতুন এক্সটেনশান দিয়ে বিকাশ সার্ভারটি শুরু করুন:
./manage.py runserver_plus
এটি আপনার ডিবাগ করার পদ্ধতি পরিবর্তন করবে।
জ্যাঙ্গো প্রকল্পগুলি ডিবাগ করার জন্য আমি পাইথন ডিবাগার পিডিবি ব্যবহার করতে চাই।
এটি কিভাবে ব্যবহার করতে শেখার জন্যে একটি সহায়ক লিঙ্ক: http://www.ferg.org/papers/debugging_in_python.html
জ্যাঙ্গো এবং অন্য অ্যাপ্লিকেশনটির মধ্যে ডেটা বিনিময় করার চেষ্টা করার সময়, request.raw_post_data
একটি ভাল বন্ধু। এটি এক্সএমএল ডেটা গ্রহণ এবং কাস্টম-প্রক্রিয়া করতে ব্যবহার করুন।
ডকুমেন্টেশন: http://docs.djangoproject.com/en/dev/ref/request-response/
জঙ্গো পাশাপাশি জিনজা 2 ব্যবহার করুন ।
যদি আপনি জ্যাঙ্গো টেম্পলেট ভাষাটিকে অত্যন্ত সীমাবদ্ধ (আমার মতো!) দেখতে পান তবে আপনাকে এটির সাথে আটকা পড়তে হবে না। জ্যাঙ্গো নমনীয়, এবং টেমপ্লেট ভাষাটি শিথিলভাবে বাকি সিস্টেমের সাথে মিলিত হয়, সুতরাং কেবলমাত্র অন্য একটি টেম্পলেট ভাষা প্লাগ-ইন করুন এবং আপনার HTTP প্রতিক্রিয়াগুলি রেন্ডার করতে এটি ব্যবহার করুন!
আমি জিঞ্জা 2 ব্যবহার করি , এটি প্রায় জ্যাঙ্গো টেম্পলেট ভাষার সংস্করণ হিসাবে চালিত, এটি একই বাক্য গঠন ব্যবহার করে এবং বিবৃতিগুলিতে আপনাকে এক্সপ্রেশন ব্যবহার করতে দেয়! যদি আর কোনও কাস্টম তৈরি হয় না যেমন-ট্যাগগুলি if_item_in_list
! আপনি কেবল বলতে পারেন %{ if item in list %}
, বা {% if object.field < 10 %}
।
কিন্তু এখানেই শেষ নয়; এটিতে টেমপ্লেট তৈরি করা সহজ করার জন্য আরও অনেকগুলি বৈশিষ্ট্য রয়েছে, যা আমি এখানে যেতে চাই না।
যোগ assert False
আপনার ভিউ কোডে ডিবাগ তথ্য ডাম্প করতে।
5 / 0
নিজেকে ব্যবহার করি। পাঁচটি কেন? কোন ধারণা নেই.
এটি জ্যাঙ্গো ইউআরএল নাম এবং উল্টো ইউআরএল প্রেরণের সম্পর্কে উপরের উত্তরে যুক্ত করে ।
ইউআরএল নামগুলি কার্যকরভাবে টেমপ্লেটগুলির মধ্যেও ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, প্রদত্ত ইউআরএল প্যাটার্নের জন্য:
url(r'(?P<project_id>\d+)/team/$', 'project_team', name='project_team')
আপনার টেমপ্লেটগুলিতে নিম্নলিখিতগুলি থাকতে পারে:
<a href="{% url project_team project.id %}">Team</a>
যেহেতু জ্যাঙ্গো "দেখা" কেবল কলযোগ্য হতে হবে যা কোনও এইচটিপিআরস্পোনকে ফিরিয়ে দেয়, আপনি খুব সহজেই ক্লাস-ভিত্তিক মতামত তৈরি করতে পারেন যেমন রবি অন রেল এবং অন্যান্য ফ্রেমওয়ার্কগুলিতে।
শ্রেণিভিত্তিক দৃষ্টিভঙ্গি তৈরি করার বিভিন্ন উপায় রয়েছে, এখানে আমার প্রিয়:
from django import http
class RestView(object):
methods = ('GET', 'HEAD')
@classmethod
def dispatch(cls, request, *args, **kwargs):
resource = cls()
if request.method.lower() not in (method.lower() for method in resource.methods):
return http.HttpResponseNotAllowed(resource.methods)
try:
method = getattr(resource, request.method.lower())
except AttributeError:
raise Exception("View method `%s` does not exist." % request.method.lower())
if not callable(method):
raise Exception("View method `%s` is not callable." % request.method.lower())
return method(request, *args, **kwargs)
def get(self, request, *args, **kwargs):
return http.HttpResponse()
def head(self, request, *args, **kwargs):
response = self.get(request, *args, **kwargs)
response.content = ''
return response
আপনি আপনার বেস ভিউতে শর্তাধীন অনুরোধ পরিচালনা এবং অনুমোদনের মতো অন্যান্য ধরণের স্টাফ যুক্ত করতে পারেন।
একবার আপনার মতামত সেটআপ হয়ে গেলে আপনার ইউআরএল.পি এটির মতো দেখতে পাবেন:
from django.conf.urls.defaults import *
from views import MyRestView
urlpatterns = patterns('',
(r'^restview/', MyRestView.dispatch),
)
এর পরিবর্তে ব্যবহার করার render_to_response
একটি টেমপ্লেটে আপনার কনটেক্সট বাঁধে এবং এটি রেন্ডার করতে (যা কি জ্যাঙ্গো ডক্স সাধারণত দেখান) জেনেরিক দৃশ্য ব্যবহার direct_to_template
। এটি একই জিনিসটি render_to_response
করে কিন্তু এটি স্বয়ংক্রিয়ভাবে টেমপ্লেট প্রসঙ্গে অনুরোধকন্টেক্সট যুক্ত করে, স্পষ্টভাবে প্রসঙ্গ প্রসেসরগুলি ব্যবহার করার অনুমতি দেয়। আপনি নিজে এটি ব্যবহার করে করতে পারেন render_to_response
তবে কেন বিরক্ত করবেন? এটি মনে রাখার জন্য আরও একটি পদক্ষেপ এবং অন্য একটি এলওসি। কনটেক্সট প্রসেসরের ব্যবহার করা ছাড়াও, আপনার টেমপ্লেটে রিকোয়েস্টকন্টেক্সট থাকা আপনাকে এই জাতীয় জিনিসগুলি করতে দেয়:
<a href="{{MEDIA_URL}}images/frog.jpg">A frog</a>
যা খুব দরকারী। আসলে, সাধারণভাবে সাধারণ দৃষ্টিভঙ্গিগুলিতে +1 on জাজানো দস্তাবেজগুলি এগুলিকে সর্বাধিক অ্যাপ্লিকেশনগুলির জন্য ভিউ.পি ফাইল না রাখার জন্য শর্টকাট হিসাবে দেখায় তবে আপনি সেগুলি আপনার নিজের দর্শন ফাংশনগুলির মধ্যেও ব্যবহার করতে পারেন:
from django.views.generic import simple
def article_detail(request, slug=None):
article = get_object_or_404(Article, slug=slug)
return simple.direct_to_template(request,
template="articles/article_detail.html",
extra_context={'article': article}
)
render
জ্যাঙ্গো ১.৩ থেকে নতুন শর্টকাট পদ্ধতি ব্যবহার করুন ( ডকস.ডজ্যাঙ্গোপ্রজেক্ট
প্রশ্নের মন্তব্যে জবাব দেওয়ার মতো যথেষ্ট খ্যাতি আমার নেই, তবে এটি লক্ষ্য করা গুরুত্বপূর্ণ যে আপনি যদি জিনজা ব্যবহার করতে চলেছেন তবে এটি টেমপ্লেট ব্লকের নামগুলিতে '-' অক্ষরকে সমর্থন করে না, যখন জাঙ্গোও করে। এটি আমাকে প্রচুর সমস্যা সৃষ্টি করেছিল এবং এটি তৈরি করা খুব অস্পষ্ট ত্রুটি বার্তাটি সন্ধান করার জন্য সময় নষ্ট করে।
Webdesign অ্যাপ্লিকেশন যখন আপনার ওয়েবসাইট ডিজাইন করার জন্য শুরু খুবই দরকারী। একবার আমদানি হয়ে গেলে, আপনি নমুনা পাঠ্য উত্পন্ন করতে এটি যুক্ত করতে পারেন:
{% load webdesign %}
{% lorem 5 p %}
django.db.models.get_model
আপনাকে কোনও মডেল এটি আমদানি না করে পুনরুদ্ধার করতে দেয়।
জেমস এটি কতটা সুবিধাজনক হতে পারে তা দেখায়: "জ্যাঙ্গো টিপস: আরও ভাল টেমপ্লেট ট্যাগ লিখুন - Iteration 4" ।
সকলেই জানেন যে একটি ডেভলপমেন্ট সার্ভার রয়েছে আপনি "ম্যানেজ.পি রানার্সভার" দিয়ে চালাতে পারেন, তবে আপনি কি জানেন যে স্ট্যাটিক ফাইলগুলি (সিএসএস / জেএস / আইএমজি) পরিবেশন করার জন্য একটি বিকাশ দৃশ্য রয়েছে?
নতুনরা সর্বদা বিস্মিত হন কারণ জ্যাঙ্গো স্থিতিশীল ফাইলগুলি সরবরাহ করার কোনও উপায় নিয়ে আসে না। এটি কারণ কারণ দেব দলটি মনে করে যে এটি বাস্তব জীবনের ওয়েব সার্ভারের কাজ।
তবে বিকাশ করার সময় আপনি অ্যাপাচি + মোড_উইগজি সেট আপ করতে নাও চান, এটি ভারী। তারপরে আপনি কেবল url.py এ নিম্নলিখিতগুলি যুক্ত করতে পারেন:
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': '/path/to/media'}),
আপনার সিএসএস / জেএস / আইএমজি www.yoursite.com/site_media/ এ উপলব্ধ।
অবশ্যই, এটি উত্পাদন পরিবেশে ব্যবহার করবেন না।
সোর্ল-থাম্বনেইলের জন্য ডকুমেন্টেশন থেকে আমি এটি শিখেছি অ্যাপ্লিকেশনটির । আপনার টেমপ্লেটের অন্য কোথাও কলটির ফলাফলগুলি ব্যবহার করতে আপনি টেমপ্লেট ট্যাগগুলিতে "হিসাবে" কীওয়ার্ডটি ব্যবহার করতে পারেন।
উদাহরণ স্বরূপ:
{% url image-processor uid as img_src %}
<img src="{% thumbnail img_src 100x100 %}"/>
এটি জাজানো টেম্পলেটটি ডকুমেন্টেশনে পাস করার ক্ষেত্রে উল্লেখ করা হয়েছে তবে কেবল লুপগুলির প্রসঙ্গে। তারা কল করে না যে আপনি এটিকে অন্য কোথাও (কোথাও?) ব্যবহার করতে পারেন।
django.views.generic.list_detail.object_list - এটি পৃষ্ঠাসমূহের জন্য সমস্ত যুক্তি এবং টেম্পলেট ভেরিয়েবল সরবরাহ করে (যাদের মধ্যে আমি হাজার-বার-এখন- ড্রডগ্রিজ লিখেছি। তার মধ্যে একটি)। এটি মোড়ানো আপনার যে কোনও যুক্তির প্রয়োজন হয়। এই রত্নটি আমার "অনুসন্ধান ফলাফল" পৃষ্ঠাগুলিতে একের পর এক ত্রুটিগুলি ডিবাগিংয়ের অনেক ঘন্টা বাঁচিয়েছে এবং প্রক্রিয়াটিতে ভিউ কোডকে আরও পরিষ্কার করে।
জাইঙ্গোর জন্য অন্তর্নির্মিত সমর্থন সহ পাইচর্ম আইডিই কোড এবং বিশেষত ডিবাগের জন্য একটি দুর্দান্ত পরিবেশ।
XML_models ব্যবহার করুন জ্যাঙ্গো মডেলগুলি তৈরি করুন যা একটি এক্সএমএল REST এপিআই ব্যাকএন্ড (এসকিউএল পরিবর্তে) ব্যবহার করে। বিশেষত তৃতীয় পক্ষের API গুলি মডেলিং করার সময় এটি খুব দরকারী - আপনি যে একই ক্যোরিসেট সিনট্যাক্স ব্যবহার করেছেন সেগুলি পাবেন। আপনি এটি পিপিআই থেকে ইনস্টল করতে পারেন।
একটি এপিআই থেকে এক্সএমএল:
<profile id=4>
<email>joe@example.com</email>
<first_name>Joe</first_name>
<last_name>Example</last_name>
<date_of_birth>1975-05-15</date_of_birth>
</profile>
এবং এখন অজগর:
class Profile(xml_models.Model):
user_id = xml_models.IntField(xpath='/profile/@id')
email = xml_models.CharField(xpath='/profile/email')
first = xml_models.CharField(xpath='/profile/first_name')
last = xml_models.CharField(xpath='/profile/last_name')
birthday = xml_models.DateField(xpath='/profile/date_of_birth')
finders = {
(user_id,): settings.API_URL +'/api/v1/profile/userid/%s',
(email,): settings.API_URL +'/api/v1/profile/email/%s',
}
profile = Profile.objects.get(user_id=4)
print profile.email
# would print 'joe@example.com'
এটি সম্পর্ক এবং সংগ্রহগুলি পরিচালনা করতে পারে। আমরা এটি প্রতিদিন প্রচুর ব্যবহৃত উত্পাদনের কোডে ব্যবহার করি, যদিও এটি বিটা হলেও এটি খুব ব্যবহারযোগ্য। এটিতে স্টাবগুলির একটি ভাল সেট রয়েছে যা আপনি আপনার পরীক্ষাগুলিতে ব্যবহার করতে পারেন।
(অস্বীকৃতি: যদিও আমি এই গ্রন্থাগারের লেখক নই, আমি এখন কিছু প্রতিশ্রুতিবদ্ধ হয়ে কয়েকটি ছোট ছোট অঙ্গীকার করেছি)