আমরা প্রিভিয়াস ভিডিও তে strip tags দেখছিলাম কিন্তু কেনো ইউজ করলাম আর কোথায় কখন ইউজ করবো বুঝি নাই আমরা । আসো সেটা সম্পর্কে জানার চেষ্টা করি। আমরা জানি যে django আমাদেরকে বিল্ট ইন ভাবে ফরম এর error মেসেজ, হেল্প টেক্সট শো করে। তবে সেটা {{form}} এভাবে ইউজ করলে। এখন যদি আমি ফরম এর উপর লুপ চালাই তাইলে যেটা হবে হেল্প টেক্সট আর এরর মেসেজ এর ব্যাপার টা তাকে বলে দিতে হবে, সেজন্যে আমরা নিচের মত করে কাজ করেছি
এখন আমরা যদি চাই যে আমাদের first_name, last_name, email এই ফিল্ড গুলাও required থাকুক অর্থাৎ ইউজার কে অবশ্যই এইগুলা ফিল আপ করতে হবে তাইলে নিচের মত করে এই তিন টা ফিল্ড এ attribute হিসেবে required অ্যাড করে দিতে পারি আমরা।
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django import forms
class RegisterForm(UserCreationForm):
first_name = forms.CharField(widget=forms.TextInput(attrs={'id' : 'required'}))
last_name = forms.CharField(widget=forms.TextInput(attrs={'id' : 'required'}))
email = forms.CharField(widget=forms.EmailInput(attrs={'id' : 'required'}))
class Meta:
model = User
fields = ['username', 'first_name', 'last_name', 'email']
এখন আসো আমরা ইউজার কে বিভিন্ন টাইপ মেসেজ দেখাতে চাই backend থেকে। সেটার জন্যে আমরা আজকে message framework সম্পর্কে জানবো। এটার কাজ হচ্ছে suppose ইউজার হয়তো একাউন্ট খুলছে বা একটা কাজ কে এডিট ডিলিট অর্থাৎ কোনো একটা অ্যাকশন পারফর্ম করছে তখন সেই কাজ টা যদি ঠিক ভাবে হয় তাইলে তাকে সাকসেস মেসেজ দিবো এর যদি কাজ টা fail করে তাকে এরর মেসেজ দিবো আবার যদি তাকে একটা ইনফো পাঠাতে চাই যে এটাই চেঞ্জ করো তাইলে info মেসেজ দিবো। নিচের কোড টা দেখো
from django.contrib import messages
from .forms import RegisterForm
def signup(request):
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
messages.success(request, 'Account created successfully')
messages.info(request, 'Welcome')
messages.warning(request, 'This is a warning message')
form.save()
print(form.cleaned_data)
else:
form = RegisterForm()
return render(request, './signup.html', {'form': form})
{% if messages %}
{% for m in messages %}
<small {% if m.tags %} class="{{m.tags}}" {% endif %}>{{m}}</small>
{% endfor %}
{% endif %}
<form method="post" style="width: 50%; margin: auto" novalidate>
<h1>Signup Page</h1>
{% csrf_token %}
<!-- {{form | crispy }} -->
{% for fm in form%} {{fm.label_tag}} {{fm}} {{fm.errors|striptags}}
{% endfor %}
<br />
<button class="btn btn-primary" type="submit">Submit</button>
<br/>
</form>