<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های عرفان مهرجو</title><link>https://virgool.ir/feed/@e.mehrjoo.e</link><description></description><language>fa</language><pubDate>2026-11-11 11:36:05</pubDate><image><url>https://files.virgool.ir/upload/users/1236215/avatar/avatar.png</url><title>عرفان مهرجو</title><link>https://virgool.ir/@e.mehrjoo.e</link></image><item><title>دوپامین دیتاکس</title><link>https://virgool.ir/@e.mehrjoo.e/دوپامین-دیتاکس-nuyrocyzj79h</link><description>شاید تا الان بارها در شبکه های اجتماعی با واژه &#34;دوپامین دیتاکس&#34; روبرو شده باشید ، و هر بار هم به سادگی از کنار آن عبور کرده باشید .خب من میخوام به صورت بسیار خلاصه از تجربه خودم درمورد دوپامین دیتاکس و ویژگی ها و کمک هایی که این فرآیند به من کرد را توضیح بدم و در آخر عنوان کنم که چگونه رابطه من با فضا مجازی به یک رابطه سالم تر تبدیل شد .خب بزارید از پایه شروع کنیم ، بهتون توضیح بدم که اصلا دوپامین چی هست چکونه ترشح میشه و سطح استاندارد ومفید آن در بدن ما به چه اندازه است و بررسی کنیم که زندگی مدرن چه بلایی سر آن آورده است .دوپامین چیست؟دوپامین یک انتقال‌دهنده عصبی مهم در مغز است که نقش کلیدی در تنظیم احساس لذت، انگیزه، و پاداش ایفا می‌کند. این ماده شیمیایی به ما کمک می‌کند تا برای انجام کارهایی که باعث رضایت می‌شوند، تشویق شویم. همچنین در فرآیندهای حیاتی دیگری مانند حافظه، یادگیری، و حرکت‌های ارادی نقش دارد.چگونه دوپامین ترشح می‌شود؟دوپامین در مغز توسط سلول‌های عصبی خاصی ترشح می‌شود و معمولاً با فعالیت‌هایی که باعث لذت یا انگیزه می‌شوند، مانند خوردن غذای خوشمزه، ورزش، یا حتی دستیابی به اهداف، افزایش می‌یابد. سیستم پاداش مغز از دوپامین به عنوان یک سیگنال &#34;رضایت&#34; استفاده می‌کند که ما را تشویق می‌کند این فعالیت‌ها را تکرار کنیم.سطح استاندارد دوپامین و اهمیت آنمقدار بهینه دوپامین در بدن برای حفظ تعادل حیاتی است.سطح کم دوپامین: می‌تواند منجر به افسردگی، بی‌انگیزگی، و حتی بیماری‌هایی مانند پارکینسون شود.سطح بالا دوپامین: می‌تواند به اعتیاد، اضطراب، یا حتی رفتارهای مخرب منجر شود.بدن ما به‌طور طبیعی سطح دوپامین را تنظیم می‌کند، اما برخی از عوامل می‌توانند این تعادل را مختل کنند.زندگی مدرن و تخریب تعادل دوپامینزندگی مدرن، با فراهم آوردن پاداش‌های سریع و غیرطبیعی، مانند استفاده بیش از حد از شبکه‌های اجتماعی، خوردن غذاهای فرآوری‌شده، و بازی‌های دیجیتال، می‌تواند باعث افزایش ناگهانی و مکرر دوپامین شود. این امر منجر به کاهش حساسیت مغز به دوپامین شده و فرد را به دنبال محرک‌های قوی‌تر می‌کشاند، فرآیندی که به نام &#34;فرسودگی دوپامین&#34; شناخته می‌شود.خب همانطور که فهمیدید دوپامین نقش بسیار مهمی را در زندگی ما ایفا میکند که میتواند تعیین کننده باشد که زندگی ما فرآیندی مثبت و صعودی داشته باشد و یا اینکه منفی و نزولی باشد ، خب فرآیند هایی سنتی مثل ورزش کردن که باعث ترشح دوپامین میشوند به صورت واضح نسبت به سختی که دارند قطعا موجب &#34;فرسودگی دوپامین&#34; مارا نخواهند کرد  ،اینجا بحث دنیا مدرن است دنیایی که شبکه های اجتماعی در آن بنا شدند با تفکری ساده برای ارتباط آسان تر اما رفته رفته دید اقتصادی به این فضا ها موجب شد که آنها را به صورتی طراحی کنند که همان فرآیند پاداش دهی و ترشح دوپامین را دنبال کنند تا هرچه شده بیشتر مخاطب را مجاب کنند تا در این فضا ها باقی بمانند تا درآمد زایی صاحبان این فضا ها بیشتر شود ، و این امر بخاطر ساده بودن و ترشح کردن حجم عظیم از دوپامین میتواند مارا به &#34;فرسودگی دوپامین&#34; برساند .خب تا اینجا براتون خیلی از مطالب پایه ای واضح شده الان قصد داریم با هم بررسی کنیم که که چگونه از این فرسودگی جلوگیری کنیم و زندگی مثبت را در پیش بگیریم .خب من برایتان توضیح خواهم داد که فرآیند دوپامین دیتاکس چگونه است ، ولی خب یه نسخه خیلی منطقی از آن را به شما معرفی خواهم کرد که برای خودم بسیار کارآمد بوده است و امیدوارم برای شما نیز کارساز باشد .دوپامین دیتاکس: بازگشت به تعادل در دنیای پر از محرک‌های مصنوعیدوپامین دیتاکس یک استراتژی ساده برای بازنشانی سیستم پاداش مغز است که به شما کمک می‌کند تا کنترل بیشتری بر زندگی خود داشته باشید. این روش به‌ویژه در دنیای مدرن، که پر از محرک‌های دوپامین‌زا مانند شبکه‌های اجتماعی، بازی‌های دیجیتال و محتوای زودبازده است، بسیار مؤثر است. اما همان‌طور که اشاره کردید، نمی‌توانیم در غار زندگی کنیم و همه چیز را کنار بگذاریم. بنابراین، بهترین راه‌حل، ترک دوره‌ای یا محدود کردن آگاهانه این محرک‌هاست.نسخه کامل دوپامین دیتاکس: شروعی برای بازسازی ذهندوپامین دیتاکس به‌طور سنتی شامل توقف استفاده از تمام محرک‌های مصنوعی برای یک روز یا بیشتر است. این شامل:عدم استفاده از شبکه‌های اجتماعی.نخوردن غذاهای ناسالم یا فرآوری‌شده.حذف موسیقی پرهیجان، بازی‌های ویدیویی و حتی صحبت‌های غیرضروری.انجام فعالیت‌های آرام مانند پیاده‌روی، مدیتیشن، یا مطالعه.هدف این است که مغز را از محرک‌های مصنوعی آزاد کرده و به فعالیت‌های طبیعی و مفید عادت دهید.چالش‌های جامعه ما: نسخه تعدیل‌شده دوپامین دیتاکسدر زندگی روزمره، ممکن است نتوانید از تمام این محرک‌ها فاصله بگیرید. بنابراین، روش عملی‌تر این است که:محرک‌ها را به‌طور موقت و دوره‌ای کنار بگذارید.روی کاهش استفاده از ابزارهایی که بیشترین تأثیر منفی را دارند، تمرکز کنید.شبکه‌های اجتماعی، به‌ویژه اینستاگرام، بدترین دشمن تعادل دوپامین شماست. الگوریتم این پلتفرم به‌گونه‌ای طراحی شده که مدام مغز شما را با محتوای جذاب بمباران کند و حساسیت مغز به دوپامین را کاهش دهد.روش پیشنهادی برای ترک و استفاده سالم از اینستاگرام:پاک کردن برنامه برای 2 هفته: این دوره به مغز شما اجازه می‌دهد تا حساسیت خود به دوپامین را بازسازی کند.بازگشت کنترل‌شده با اپلیکیشن‌های جانبی:از اپلیکیشن‌های مدیریت شبکه‌های اجتماعی استفاده کنید که دسترسی به اکسپلور و محتواهای دوپامین‌محور (مانند ویدیوهای کوتاه و هیجانی) را مسدود می‌کنند.مثلاً می‌توانید از نسخه‌های غیررسمی اینستاگرام یا ابزارهای مدیریت صفحه استفاده کنید که هدفمند هستند و شما را از مرور بیهوده دور نگه می‌دارند.تعیین زمان مشخص استفاده: فقط در ساعات خاصی از روز وارد شوید و روی تعاملات معنادار تمرکز کنید.فواید دوپامین دیتاکس و مدیریت هوشمندانه محتوا:افزایش تمرکز و توانایی لذت بردن از فعالیت‌های ساده و روزمره.کاهش استرس و اضطراب ناشی از اعتیاد به شبکه‌های اجتماعی.ایجاد رابطه سالم‌تر با فناوری و فضای مجازی.خب اگر بتوانید نسخه کامل دوپامین دیتاکس را اجرا کنید که بسیار عالی است اما فرآیندی که برای من کار کرد نسخه تعدیل شده آن بود که به مدت دو هفته کامل از اینستاگرام خارج شدم و اکنون نیز از نسخه محدود سازی شده آن استفاده میکنم که دسترسی به اکسپلور در آن وجود ندارد که همین بسیار کمک کننده من بوده است .امیدوارم شما نیز بتوانید با این روش ها به تعادل در استفاده از شبکه های اجتماعی برسید .پایان .</description><category>عرفان مهرجو</category><author>عرفان مهرجو</author><pubDate>Fri, 22 Nov 2024 19:30:17 +0330</pubDate></item><item><title>Django cheat sheet</title><link>https://virgool.ir/@e.mehrjoo.e/django-cheat-sheet-uexo8a3dmzl4</link><description>Start a new Django project# Create et access project folder~$  mkdir project_name~$  cd project_name# Create Python virtual env ~$  python3 -m venv venv# Activate virtual env~$  source venv/bin/activate# If you want to deactivate virtual env~$  deactivate# Install django (~= same as 3.1.*)~$  pip install django~=3.1.0 # New django project (from project_name folder)~$  django-admin startproject config .# Create app (from project_name folder)~$  python manage.py startapp app_nameMigration:Django create a database table for each models present in your app using thoses commands:Makemigrations: Create a file under app_name/migrations with the database structure to create~$  python manage.py makemigrationsMigrate: Will read the migrations files and create the actual database and tables~$  python manage.py migrateCreate superuser for authenficiation/admin panel~$  python manage.py createsuperuserStart server~$  python manage.py runserver  =&gt; ex.  http://127.0.0.1:8000Requirements# Create a requirements file that contain all your projet dependencies~$  pip freeze &gt; requirements.txt# Install your project requirements (if a requirements file exist) ~$  pip install -r requirements.txtOther commands# Django shell (Run projet code direclty)~$ python manage.py shell# example of code to run in the shell: &gt;&gt;&gt; from app_name.models import User &gt;&gt;&gt; user1 = User.objects.first()# Prepare static folders for production$ python manage.py collectstatic# Take all data from app blog and export in jsonpython manage.py dumpdata blog &gt;myapp.json# Take all data in json file and import in app data tablepython manage.py loaddata myapp.jsonProject config# Add app to settings.pyINSTALLED_APPS = [ … , &#39;app_name&#39; ]# App templates foldercreate folder appfolder/templates/appname# Project templates folder: create folder projectname/templates# settings.py template configProject templates settings.py:     TEMPLATES = [        { …                &#39;DIRS&#39;: [BASE_DIR / &#39;templates&#39;, ],        … }# Create Static folder: project_name\static\# Static folder (settings.py): STATIC_URL = &#39;/static/&#39;STATICFILES_DIRS = [ BASE_DIR / &#39;static&#39; ] STATIC_ROOT = &#39;static_root&#39;# To use PostgresSQL# pip install psycopg2# settings.pyDATABASE = {    &#39;default&#39;: {        &#39;ENGINE&#39;: &#39;django.db.backends.postgresql&#39;,        &#39;NAME&#39;: &#39;blog&#39;,        &#39;USER&#39;: &#39;admin&#39;,        &#39;PASSWORD&#39;: &#39;123456&#39;,        &#39;HOST&#39;: &#39;localhost&#39;,        &#39;PORT&#39;: &#39;5432&#39;Create data model:Theses models can be created as database tables with the migrations commands# models.py# The id fields is automaticly created by Django for each model that why it&#39;s not show belowfrom django.db import modelsclass Customer(models.Model)    name = models.Charfield(&#39;Customer&#39;, max_length=120)    age = models.IntegerField()    note = models.TextField(blank=True, null = True)    email = models.EmailField(max_length=255, blank=True, null=True)    credit = models.FloatField(blank=True)    is_active = models.BooleanField(default=True)    created_at = models.DateTimeField(auto_now_add=True)    updated_at = models.DateTimeField(auto_now=True)    # Select Field (return value, display value)    TYPE_CHOICES = (        (&#39;Customer&#39;, &#39;Customer&#39;),        (&#39;Supplier&#39;, &#39;Supplier&#39;),        (&#39;Student&#39;, &#39;Student&#39;),    )    type = models.CharField(choices=TYPE_CHOICES)Model string representationclass Customer(models.Model):    name = models.Charfield(&#39;Customer&#39;, max_length=120)    age = models.IntegerField()    def __str__(self):         return self.nameRelationship between models# One-to-Many: (use double quotes if the entity is not yet declare) ex. &#34;Supplier&#34;supplier = models.ForeignKey(Supplier, blank=True, null=True, on_delete=models.CASCADE)# on_delete can be set to models.CASCADE, models.ST_DEFAULT or models.SET_NULL# Many-to-Many: tags = models.ManyToManyField(Tag, blank=True)# One to One User = models.OneToOneField(User, on_delete=models.CASCADE)# Overwrite save methoddef save(self, (*args, **kwargs):    if not self.slug:        self.slug = slugify(self.title)    super().save(*args, **kwargs)Admin panel:Every Django projects come with an Admin Panel that can be open at /admin url (ex: localhost:8000/admin)To display the model in the Admin panel register the model in the app_name/admin.py filefrom .models import Blogadmin.site.register(Blog)Customize Admin PanelFor each models you can specify the fields you want to use# Custom model Admin (admin.py): class BlogAdmin(admin.ModelAdmin)    fields = (&#34;title&#34;, &#34;description&#34;) # Fields to use for add/edit/show page    list_display = (&#34;title&#34;, &#34;description&#34;) # fields to display in search page    list_display_links = (&#34;title&#34;) # fields that will be a link in search page    ordering(&#34;date_created&#34;,) # Ordering allowed in the search page    search_fields(&#34;title&#34;, &#34;description&#34;) # Search fields allowed in the search page# Register appadmin.site.register(Blog, BlogAdmin)Routing:Django routing info is store in project_folder/urls.py filefrom django.contrib import adminfrom django.urls import path, includeurlpatterns = [    path(&#39;admin/&#39;, admin.site.urls), # pre-created admin urls routes    path(&#39;&#39;, include(&#39;app_name.urls&#39;)) # include your app urls]the &#39;include()&#39; method allow to link another urls.py file created in your app folder (app_name/urls.py)from django.urls import pathfrom . import viewsurl patterns = [     path(&#39;posts&#39;, views.index, name=&#39;posts.index&#39;),    path(&#39;posts/create/&#39;, views.create, name=&#39;posts.create&#39;,    path(&#39;posts/&lt;int:id&gt;/&#39;, views.show, name=&#39;posts.show&#39;),    path(&#39;posts/&lt;int:id&gt;/edit/&#39;, views.edit, name=&#39;posts.edit&#39;),    path(&#39;posts/&lt;int:id&gt;/delete/&#39;, views.delete, name=&#39;posts.delete&#39;),]Static routefrom django.conf import settingsfrom django.conf.urls.static import staticurlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)Function Based Views# views.pyfrom django.shortcuts import render, redirectfrom .models import Postfrom .forms import PostFormdef index(request):    # Get all Posts    posts = Post.objects.all()    # Render app template with context    return render(request, &#39;appfolder/index.html&#39;, {&#39;posts&#39;: posts})def show(request, id):    post = Post.objects.get(id=id)    return render(request, &#39;appfolder/show.html&#39;, {&#39;post&#39;: post})def create(request):    form = PostForm(request.POST or None)    if form.is_valid():        # optionally we can access form data with form.cleaned_data[&#39;first_name&#39;]        post = form.save(commit=False)        post.user = request.user        post.save()        return redirect(&#39;/posts&#39;)    return render(request, &#39;appfolder/create.html&#39;, {&#39;form&#39;: form)def edit(request, id):    post = Post.objects.get(id=id)    form = PostForm(request.POST or None, instance=post)    if form.is_valid():        form.save()        return redirect(&#39;/posts&#39;)    return render(request, &#39;appfolder/edit.html&#39;, {&#39;form&#39;: form)def delete(request, id):    post = Post.objects.get(id=id)    post.delete()    return redirect(&#39;/posts&#39;)Class based Viewsfrom django.views.generic import TemplateView, ListView, DetailView, CreateView, UpdateView, DeleteViewclass LandingPageView(TemplateView):    template_name = &#39;landing.html&#39;    # Optional: Change context data dict    def get_context_data(self, **kwargs):        context = super().get_context_data(**kwargs)        context[&#39;title&#39;] = &#39;Landing Page&#39;        return contextclass PostsListView(ListView):    queryset = Post.objects.all()  # Optional    # context_object_name = &#34;posts&#34; (default: post_list)    # template_name = &#39;posts.html&#39; (default: posts/post_list.html) class PostsDetailView(DetailView):    model = Post # object var in template  # Optional    # template_name = &#39;post.html&#39; (default: posts/post_detail.html)class PostsCreateView(CreateView):    form_class = PostForm    template_name = &#39;posts/post_create.html&#39; # no default value    def get_success_url(self):        return reverse(&#39;posts-list&#39;)    # Optional: Overwrite form data (before save)    def form_valid(self, form):        if self.request.user.is_authenticated:            from.instance.author = self.request.user        return super().form_valid(form)class PostsUpdateView(UpdateView):    model = Post    form_class = PostForm    template_name = &#39;posts/post_update.html&#39;    def get_success_url(self):        return reverse(&#39;post-list&#39;)    # Optional: Change context data dict    def get_context_data(self, **kwargs):        context = super().get_context_data(**kwargs)        context[&#39;submit_text&#39;] = &#39;Update&#39;        return contextclass PostsDeleteView(DeleteView):    model = Post    template_name = &#39;posts/post_delete.html&#39;    success_url = reverse_lazy(&#39;posts-list&#39;)# Urls.py route declarationpath(&#39;&lt;int:pk&gt;/update/&#39;, PostsUpdateView.as_view(), name=&#39;post-update&#39;)Django Template:Templates are store in project_folder/templates or in your app_folder/templates/app_name/*.html{% extends &#39;base.html&#39; %}{% block content %}     {% endblock %} {% include &#39;header.html&#39; %} {% if user.username = &#39;Mike&#39; %}    &lt;p&gt;Hello Admin&lt;/p&gt;   {% else %}       &lt;p&gt;Hello User&lt;/p&gt;{% endif %} {% for product in products %}     &lt;p&gt;The product name is {{ product }}&lt;p&gt;{% endfor %} {{ var_name }}Template variables formating{{ title | lower }} {{ blog.post | truncatwords:50 }}{{ order.date | date:&#34;D M Y&#34; }}{{ list_items | slice:&#34;:3&#34; }}{{ total | default:&#34;nil&#34; }}Current path (ex. posts/1/show){{ request.path }}   URL by name with param{% url &#39;posts.delete&#39; id=post.id %}Use static in template: {% load static %}{% static &#39;css/main.css&#39; %}Model Managers and Querysets:Model manager allow model database reads and writes# One line create and saveArticle.objects.create(name=&#39;Item 1&#39;, price=19.95) # Read allArticle.objects.all()# Createuser = User.objects.first()article = Article(user=user, name=&#39;Item 1&#39;, price=19.95)# Savearticle.save()# Read oneArticle.objects.get(id=1) # Select Related (to avoid n+1 query)posts = Post.objects.select_related(&#39;user&#39;, &#39;category&#39;).all()# Read or render a 404 not found pagefrom django.shortcuts import get_object_or_404article = get_object_or_404(Article, id=512)# Filter Article.objects.filter(model=&#39;dyson&#39;, name__icontains=&#39;dyson&#39;) # __icontains    Article.objects.filter(year__gt=2016) # __gt = greater than Article.objects.filter(year__lt=2001) # __lt = less than # Filter on relationship sub model fieldArticle.objects.get(user__username=&#39;mike&#39;)# Ordering Article.objects.order_by(&#39;name&#39;)     # ascendingArticle.objects.order_by(&#39;-name&#39;)   # descending# Slicing return firstArticle.objects.all().order_by(&#39;name&#39;)[0]# Slicing return lastArticle.objects.all().order_by(&#39;-name&#39;)[0]# Slicing limit/offsetArticle.objects.all().order_by(&#39;name&#39;)[1..10]# Updatingarticle = Article.objects.first()article.name = &#39;new name&#39;article.save()# One line updateArticle.objects.filter(id=4).update(name=&#39;new name&#39;)# Deletingarticle = Article.objects.first()article.delete()# One line deletearticle.objects.get(id=1).delete()# Delete allArticle.objects.all().delete()# Set ForeignKey field valuemodel1 = Model(name=&#39;dyson&#39;)article.model = model1# Get ForeignKey valuearticle1.model.namemodel1.article_set.all()# Add Many-to-Manyarticle1.tags.add(tag1) article1.tags.all()tag1.articles_set.all()Form (forms.py)from django import formsclass ArticleForm(forms.Form):     name = forms.Charfield(max_length=100)    description = forms.Charfield(blank=True, null = True)# Model Form from django.forms import ModelFormfrom .models import Articleclass ArticleForm(ModelForm):    class Meta:        model = Article        fields = [&#39;name&#39;, &#39;description&#39;, &#39;price&#39;] # Use &#39;__all__&#39; for all fields# Render form in template&lt;form method=“post” action=“” novalidate&gt;     {% csrf_token %}    {{ form }}     &lt;button type=&#34;submit&#34;&gt;Submit&lt;/button&gt;&lt;/form&gt;# Bootstrap (pip install django-crispy-forms + installed_apps: &#39;crispy_forms&#39;){% load crispy_forms_tags %}{{ form|crispy }}{{ form.email|as_crispy_field }}# crispy-tailwindpip install crispy-tailwind# settings.pyCRISPY_ALLOWED_TEMPLATE_PACKS = &#39;tailwind&#39;CRISPY_TEMPLATE_PACK = &#39;tailwind&#39;# template usage{% load tailwind_filters %}{{ form|crispy}}Form validation# forms.pyfrom django.core.exceptions import ValidationError# field validation def clean_first_name(self):    data = self.cleaned_data[&#39;first_name&#39;]    if data = &#39;Mike&#39;:        raise ValidationError(&#39;Your name must not be Mike&#39;)    return data# form validation def clean(self):    first_name = self.cleaned_data[&#39;first_name&#39;]    last_name = self.cleaned_data[&#39;last_name&#39;]    if first_name + last_name = &#39;MikeTaylor&#39;:        raise ValidationError(&#39;Your name must not be Mike Taylor&#39;)Flash messagesmessages.success(request, &#39;Login successful&#39;)messages.error(request, &#39;Login error&#39;)# Message tags# debug, info, success, warning and error# Display flash in template {% if messages %}     {% for message in messages %}         {% message %}         {% message.tags %}User model (pre-created)# Get a reference to Django pre-created User modelfrom django.contrib.auth import get_user_modelUser = get_user_model()# Or if you want to custom user modelfrom django.contrib.auth.models import AbstractUserclass User(AbstractUser):     # add custom fields and methods# To make Django use that model go to settings.py and add: AUTH_USER_MODEL = &#39;app_name.User&#39;Authentification: LoginView# LoginView is already pre-created by Djangofrom django.contrib.auth.views import LoginView# Add a url to reach that viewpath(&#39;login/&#39;, LoginView.as_view(), name=&#39;login&#39;)# By default the LoginView will try to open a template name &#39;registration/login.html&#39; and send a login form with it.# Create a template under registration/login.html{% extends &#34;base.html&#34; %}{% block content %}    &lt;form method=&#34;post&#34;&gt;        {% csrf_token %}        {{ form }}        &lt;button type=&#34;submit&#34;&gt;Login&lt;/button&gt;    &lt;/form&gt;{% endblock content %}# When user click the Login button, the LoginView will try to authenticate the user with the form username ans password. # If successful il will then login the user and redirect to LOGIN_REDIRECT_URL specified in your settings.pyAuthentification: LogoutView# LogoutView is already pre-created by Djangofrom django.contrib.auth.views import LogoutView# Add a url to reach that viewpath(&#39;logout/&#39;, LoginView.as_view(), name=&#39;logout&#39;)# Include a link in a template&lt;a&gt; href=&#34;{% url &#39;logout&#39; %}&#34;&gt;Logout&lt;/a&gt;# After link is execute, the user will be logout and redirect to LOGOUT_REDIRECT_URL specified in your settings.pyAuthentification: SignupView# Create a SignupView (that view is not created by default)# import sinupview form pre-created by Djangofrom django.contrib.auth.forms import UserCreationFormfrom django.views.generic import CreateViewclass SignupView(CreateView):    template_name = &#39;registration/signup.html&#39;    form_class = UserCreationForm    def get_success_url(self):        return reverse(&#34;login&#34;)# Create template: registration/signup.html{% extends &#34;base.html&#34; %}{% block content %}    &lt;form method=&#34;post&#34;&gt;        {% csrf_token %}        {{ form }}        &lt;button type=&#34;submit&#34;&gt;Signup&lt;/button&gt;    &lt;/form&gt;{% endblock content %}# Add a url to reach that viewfrom posts.views import SignupViewpath(&#39;signup/&#39;, SignupView.as_view(), name=&#39;signup&#39;)# Optional: Customize the UserCreationForm# (forms.py)from django.contrib.auth import get_user_modelfrom django.contrib.auth.forms import UserCreationFormUser = get_user_model()class CustomUserCreationForm(UserCreattionForm):    class Meta:        model = User        fields = [&#39;username&#39;]        fields_classes = {&#39;username&#39;: UsernameField}Optional pre-created authentification routes# urls.pyurlpatterns += path(&#39;&#39;, include(&#39;django.contrib.auth.urls&#39;))# /login, /lougout, /signup, etc.Template Authentification helpers# Authentication links&lt;a href=&#34;{% url &#39;login&#39; %}&#34;&gt;Login&lt;/a&gt;&lt;a href=&#34;{% url &#39;signup&#39; %}&#34;&gt;Signup&lt;/a&gt;&lt;a href=&#34;{% url &#39;logout&#39; %}&#34;&gt;Logout&lt;/a&gt;# Check if user login{% if request.user.is_authenticated %}    Logged in as: {{ request.user.username }}{% endif %}Authorization: LoginRequiredMixin and login_requiredfrom django.contrib.auth.mixins import LoginRequiredMixin# Restrict views to auth user only (views.py)class PostsCreateView(LoginRequiredMixin, generic.CreateView):    ...    ...from django.contrib.auth.decorators import login_required@login_required(login_url=&#39;/login&#39;)def search_page(request):    ...    ...Manual Authentification, Login and Logoutfrom django.contrib.auth import authenticate, logindef login_page(request):    if request.method == &#34;POST&#34;:        username = request.POST.get(&#34;username&#34;)        password = request.POST.get(&#34;password&#34;)        user = authenticate(request, username=username, password=password)        if user is not None:            login(request, user)            return redirect(&#34;index&#34;)return render(request, &#34;registration/login.html&#34;, {})def logout_page(request):    logout(request)    return redirect(&#34;index&#34;)User Change password# set_password will hash the passworduser.set_password(&#39;raw password&#39;)Send Email# settings.pyEMAIL_BACKEND = &#34;django.core.mail.backends.console.EmailBackend&#34;# Send email functionfrom django.core.email import send_mailsend_mail(    subject = &#34;A new post has been created&#34;,    messsage = &#34;Go to the web site to see the detail&#34;,    from_email = &#34;test@test.com&#34;,    recipient_list = [&#34;test2@text.com&#34;])Signals# models.pyfrom django.db.models.signals import post_save, pre_savedef post_user_created_signal(sender, instance, created, **kwargs):    if created:        UserProfile.objects.create(user=instance)# Launch the post_user_create_singal method if User model is savepost_save.connect(post_user_created_signal, sender=User)Seedfrom .models import Product, Categoryfrom django.shortcuts import HttpResponsefrom faker import Fakerdef seed(request):    Product.objects.all().delete()    Category.objects.all().delete()    category = Category()    category.name = &#34;Sports&#34;    category.save()    category = Category()    category.name = &#34;Home&#34;    category.save()    fake = Faker()    for _ in range(100):        product = Product()        product.name = fake.unique.word()        product.short_description = fake.sentence()        product.main_picture = fake.image_url()        product.price = fake.random_digit() * 10        product.category =  Category.objects.order_by(&#39;?&#39;).first()        product.save()    return HttpResponse(&#39;Seeded&#39;).env key/value file$ pip install django-dotenvadd code to manage.py fileimport dotenvdef main():    &#34;&#34;&#34;Run administrative tasks.&#34;&#34;&#34;    dotenv.read_dotenv() #add this line    ...    ...Create a file name &#39;.env&#39; in the root folder of your projectSECRET_KEY = &#39;your secret key&#39;ALLOWED_HOST=127.0.0.1In settings.py change security related settings to point to the .env fileimport osSECRET_KEY = os.environ.get(&#39;SECRET_KEY&#39;)ALLOWED_HOSTS = os.environ.get(&#39;ALLOWED_HOSTS&#39;)</description><category>عرفان مهرجو</category><author>عرفان مهرجو</author><pubDate>Wed, 13 Jul 2022 21:59:54 +0430</pubDate></item></channel></rss>