জ্যাঙ্গো টেম্পলেটগুলিতে "কিছুই নয়" এর সমতুল্য কী?


107

আমি দেখতে চাই যে জ্যাঙ্গো টেমপ্লেটের মধ্যে কোনও ক্ষেত্র / পরিবর্তনশীল কোনও নয়। তার জন্য সঠিক বাক্য গঠন কী?

আমার কাছে বর্তমানে এটি রয়েছে:

{% if profile.user.first_name is null %}
  <p> -- </p>
{% elif %}
  {{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif%}

উপরের উদাহরণে, আমি "নাল" প্রতিস্থাপন করতে কী ব্যবহার করব?

উত্তর:


134

None, False and Trueসমস্ত টেমপ্লেট ট্যাগ এবং ফিল্টারগুলির মধ্যে উপলব্ধ। None, False, খালি স্ট্রিং ( '', "", """""") এবং খালি তালিকাগুলি / টিপলস সমস্ত মূল্যায়নের Falseসময় মূল্যায়ন করে if, যাতে আপনি সহজেই করতে পারেন

{% if profile.user.first_name == None %}
{% if not profile.user.first_name %}

একটি ইঙ্গিত: @ ফ্যাবিওসারকিয়ার ঠিক আছে, মডেলগুলিকে যুক্তি ছেড়ে দিন, টেমপ্লেটগুলিকে একমাত্র উপস্থাপনা স্তর হিসাবে সীমাবদ্ধ করুন এবং আপনার মডেলটিতে স্টাফ গণনা করুন। একটি উদাহরণ:

# someapp/models.py
class UserProfile(models.Model):
    user = models.OneToOneField('auth.User')
    # other fields

    def get_full_name(self):
        if not self.user.first_name:
            return
        return ' '.join([self.user.first_name, self.user.last_name])

# template
{{ user.get_profile.get_full_name }}

আশাকরি এটা সাহায্য করবে :)


আমি কেবলমাত্র কোনওটিকেই {% ক্যাশে%} ট্যাগের পরামিতি হিসাবে দেওয়ার চেষ্টা করেছি এবং শিখেছি যে এটি উপলব্ধ নয়। ব্যস্ত এই চারপাশে কাজ।
tobych

7
{% if profile.user.first_name is None %}জ্যাঙ্গো টেমপ্লেটে সিনট্যাক্স ত্রুটির কারণ ঘটায়।
রক্যালাইট

4
আপনার ইঙ্গিতটি আপনার মডেলটিতে এইচটিএমএল লাগিয়ে উপস্থাপনা এবং যুক্তিকে মিশ্রিত করে, আপনি যা শেখানোর চেষ্টা করছেন তার ঠিক বিপরীতে। কোনও নাম নেই (কোনও ডেটা মডেলের জন্য যৌক্তিক আচরণ) এবং তারপরে default_if_noneটেমপ্লেটে ফিল্টারটি ব্যবহার না করে কীভাবে ফিরে আসবেন ?
jbg

@ জ্যাস্পার ব্রায়ান্ট-গ্রিন আপনি ঠিক বলেছেন! সবেমাত্র আপডেট হয়েছে। ভাল ধরা মানুষ! ধন্যবাদ!
জেরার্ড

69

আপনি অন্য অন্তর্নির্মিত টেম্পলেট ব্যবহার করতে পারেন default_if_none

{{ profile.user.first_name|default_if_none:"--" }}

4
তারিখের মতো অন্যান্য ফিল্টারগুলির সাথে এটি কীভাবে ব্যবহার করবেন কোনও ধারণা? উদাহরণস্বরূপ, যদি কোনও তারিখ না থাকে তবে অন্যভাবে এটি ফর্ম্যাট করা হলে "এন / এ" প্রদর্শন করা সম্ভব? পছন্দ: {{post.pub_date | default_if_none: "N / A" | তারিখ: "Ymd"}}?
Andreas Bergstrgm

@ AndreasBergström আপনার ক্ষেত্রে আপনি dateপ্রথমে আবেদন করুন । যদি কোনও ত্রুটি দেখা দেয় তবে এটি কিছুই ফিরিয়ে দেবে না। তারপরে আপনি আবেদন করুন default_if_none
ডিফেন্স 14

এটি জাঙ্গোর কোন সংস্করণে আনা হয়েছিল?
ব্যবহারকারী


6

আপনি বিল্ট-ইন টেম্পলেট ফিল্টারটিও ব্যবহার করতে পারেন default:

যদি মানটি মিথ্যা (যেমন কোনও নয়, একটি খালি স্ট্রিং, 0, মিথ্যা) মূল্যায়ন করে; ডিফল্ট "-" প্রদর্শিত হয়।

{{ profile.user.first_name|default:"--" }}

ডকুমেন্টেশন: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#default


4
default_if_none সম্ভবত একটি ভাল বিকল্প হতে পারে।
dbn


4

{% if profile.user.first_name %}কাজ করে (ধরে নিও যে আপনি গ্রহণ করতে চান না '')

ifপাইথন সাধারণ একইরূপে মধ্যে None, False, '', [], {}, ... সমস্ত মিথ্যা হিসাবে।


0

আপনি এটি চেষ্টা করতে পারেন:

{% if not profile.user.first_name.value %}
  <p> -- </p>
{% else %}
  {{ profile.user.first_name }} {{ profile.user.last_name }}
{% endif %}

এই পদ্ধতিতে, আপনি ফর্ম ফিল্ডের first_nameসাথে কোনও মান যুক্ত আছে কিনা তা পরীক্ষা করে দেখছেন । দেখুন {{ field.value }}জ্যাঙ্গো ডকুমেন্টেশনে ফর্ম মাঠে উপর Looping

আমি জ্যাঙ্গো 3.0 ব্যবহার করছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.