<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Eugene</title>
    <description>The latest articles on DEV Community by Eugene (@vomkt).</description>
    <link>https://dev.to/vomkt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F905163%2F10b61668-84c7-4e92-a4e7-4d897c118c6e.png</url>
      <title>DEV Community: Eugene</title>
      <link>https://dev.to/vomkt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vomkt"/>
    <language>en</language>
    <item>
      <title>Creating a simple Django site with a contact form and saving the received information in the database</title>
      <dc:creator>Eugene</dc:creator>
      <pubDate>Sat, 13 Aug 2022 14:05:20 +0000</pubDate>
      <link>https://dev.to/vomkt/creating-a-simple-django-site-with-a-contact-form-and-saving-the-received-information-in-the-database-3g04</link>
      <guid>https://dev.to/vomkt/creating-a-simple-django-site-with-a-contact-form-and-saving-the-received-information-in-the-database-3g04</guid>
      <description>&lt;p&gt;I will be using PyCharm Community, you can use your favorite code editor. Activate the virtual environment with the command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;source projectvenv/bin/activate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Install Django:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip3 install Django&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A new Django project is created with the django-admin startproject  command (choose your project name yourself):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;django-admin startproject projectsite&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The application is created with the command python3 manage.py startapp  (choose the name of your project yourself):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python3 manage.py startapp mysite&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Structure of our project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QS27i7yi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8330ik9jpdcxjm5v7lxa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QS27i7yi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8330ik9jpdcxjm5v7lxa.png" alt="Image description" width="354" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's start the Django web server:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python3 manage.py runserver&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AVkWdpWT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prtkq7il6p4m6i48g0vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AVkWdpWT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/prtkq7il6p4m6i48g0vd.png" alt="Image description" width="880" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's register the newly created application in the project. Let's find the settings.py file in the configuration package, open it in a text editor and find the following code snippet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'mysite', #new app
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's create our model. Let's open the models.py file and add this code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.db import models


class Task(models.Model):
    title = models.CharField(max_length=50)
    task = models.TextField()

    def __str__(self):
        return self.title


class Note(models.Model):
    title = models.CharField(max_length=50)
    task = models.TextField()

    def __str__(self):
        return self.title


class About(models.Model):
    title = models.CharField(max_length=50)
    task = models.TextField()

    def __str__(self):
        return self.title


class Contact(models.Model):
    email = models.EmailField()
    subject = models.CharField(max_length=255)
    message = models.TextField()

    def __str__(self):
        return self.email
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CharField&lt;/strong&gt; - A string field, for small- to large-sized strings.&lt;br&gt;
&lt;strong&gt;TextField&lt;/strong&gt; - A large text field. The default form widget for this field is a Textarea.&lt;br&gt;
&lt;strong&gt;EmailField&lt;/strong&gt; - A CharField that checks that the value is a valid email address using EmailValidator.&lt;/p&gt;

&lt;p&gt;Next, we generate and execute migrations with the commands:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python3 manage.py makemigrations&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZaFJD8dA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9un72irqv5vts9ful1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZaFJD8dA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n9un72irqv5vts9ful1i.png" alt="Image description" width="569" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python3 manage.py migrate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BnkGdGIs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bfegmmvxnxuaeuypd7ds.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BnkGdGIs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bfegmmvxnxuaeuypd7ds.png" alt="Image description" width="785" height="754"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we can start using the admin panel. But for this we need a user. You can create it like this: python manage.py createsuperuser. After that, we start the server and we go to &lt;a href="http://127.0.0.1:8000/admin/"&gt;http://127.0.0.1:8000/admin/&lt;/a&gt;. You will see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wKl0zJ2_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i2hlyem97kabv2nroox4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wKl0zJ2_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i2hlyem97kabv2nroox4.png" alt="Image description" width="880" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, let's open admin.py file of the mysite app and add this code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.contrib import admin
from .models import Task, Note, About, Contact

admin.site.register(Task)
admin.site.register(Note)
admin.site.register(About)
admin.site.register(Contact)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's what happens in the end:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--08NK7-2V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8fem3j3yibbm7ct2eccn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--08NK7-2V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8fem3j3yibbm7ct2eccn.png" alt="Image description" width="880" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's  create forms.py in mysite application directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.forms import ModelForm
from .models import Contact


class ContactForm(ModelForm):
    class Meta:
        model = Contact
        fields = '__all__'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's open views.py of your mysite app and add this code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.shortcuts import render
from .models import Task, Note, About
from .forms import ContactForm


def index(request):
    tasks = Task.objects.all()
    return render(request, 'index.html', {'tasks': tasks})


def about(request):
    self = About.objects.all()
    return render(request, 'about.html', {'self': self})


def blog(request):
    notes = Note.objects.all()
    return render(request, 'blog.html', {'notes': notes})

def contact_view(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            form.save()
            return render(request, 'success.html')
    form = ContactForm()
    context = {'form': form}
    return render(request, 'contacts.html', context)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's create urls.py in mysite application directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='home'),
    path('about', views.about, name='about'),
    path('blog', views.blog, name='blog'),
    path('contact', views.contact_view, name='contacts'),
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's open urls.py of projectsite directory and add this code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.contrib import admin
from django.urls import path, include
from mysite import views as contact_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('mysite.urls')),
    path('contacts/', contact_views.contact_view, name='contacts'),
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's open settings.py and add this code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import os
...
STATICFILES_DIRS = [
   os.path.join(BASE_DIR, "static"),
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's create a static directory and create a contact.css file in it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;input[type=text], input[type=email], textarea {
 width: 100%;
 padding: 12px 20px;
 margin: 8px 0;
 display: inline-block;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's create a templates folder, and there we'll create:&lt;/p&gt;

&lt;p&gt;base.html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% load static %}
&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"&amp;gt;
    &amp;lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&amp;gt;
    &amp;lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"&amp;gt;
    &amp;lt;link href="{% static "/contact.css" %}" rel="stylesheet"&amp;gt;
    &amp;lt;title&amp;gt;MySite{% block title %}{% endblock title %}&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class="d-flex flex-column flex-md-row align-items-center pb-3 mb-4 border-bottom"&amp;gt;
      &amp;lt;a href="/" class="d-flex align-items-center text-dark text-decoration-none"&amp;gt;
        &amp;lt;svg xmlns="http://www.w3.org/2000/svg" width="40" height="32" class="me-2" viewBox="0 0 118 94" role="img"&amp;gt;&amp;lt;title&amp;gt;Bootstrap&amp;lt;/title&amp;gt;&amp;lt;path fill-rule="evenodd" clip-rule="evenodd" d="M24.509 0c-6.733 0-11.715 5.893-11.492 12.284.214 6.14-.064 14.092-2.066 20.577C8.943 39.365 5.547 43.485 0 44.014v5.972c5.547.529 8.943 4.649 10.951 11.153 2.002 6.485 2.28 14.437 2.066 20.577C12.794 88.106 17.776 94 24.51 94H93.5c6.733 0 11.714-5.893 11.491-12.284-.214-6.14.064-14.092 2.066-20.577 2.009-6.504 5.396-10.624 10.943-11.153v-5.972c-5.547-.529-8.934-4.649-10.943-11.153-2.002-6.484-2.28-14.437-2.066-20.577C105.214 5.894 100.233 0 93.5 0H24.508zM80 57.863C80 66.663 73.436 72 62.543 72H44a2 2 0 01-2-2V24a2 2 0 012-2h18.437c9.083 0 15.044 4.92 15.044 12.474 0 5.302-4.01 10.049-9.119 10.88v.277C75.317 46.394 80 51.21 80 57.863zM60.521 28.34H49.948v14.934h8.905c6.884 0 10.68-2.772 10.68-7.727 0-4.643-3.264-7.207-9.012-7.207zM49.948 49.2v16.458H60.91c7.167 0 10.964-2.876 10.964-8.281 0-5.406-3.903-8.178-11.425-8.178H49.948z" fill="currentColor"&amp;gt;&amp;lt;/path&amp;gt;&amp;lt;/svg&amp;gt;
        &amp;lt;span class="fs-4"&amp;gt;MySite&amp;lt;/span&amp;gt;
      &amp;lt;/a&amp;gt;

      &amp;lt;nav class="d-inline-flex mt-2 mt-md-0 ms-md-auto"&amp;gt;
        &amp;lt;a class="me-3 py-2 text-dark text-decoration-none" href="/"&amp;gt;Home&amp;lt;/a&amp;gt;
        &amp;lt;a class="me-3 py-2 text-dark text-decoration-none" href="/blog"&amp;gt;Blog&amp;lt;/a&amp;gt;
        &amp;lt;a class="me-3 py-2 text-dark text-decoration-none" href="/about"&amp;gt;About&amp;lt;/a&amp;gt;
        &amp;lt;a class="me-3 py-2 text-dark text-decoration-none" href="/contacts"&amp;gt;Contact&amp;lt;/a&amp;gt;
      &amp;lt;/nav&amp;gt;
    &amp;lt;/div&amp;gt;

        &amp;lt;div class="container"&amp;gt;
        {% block content %}

        {% endblock content %}
        &amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;index.html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% extends 'base.html' %}
{% block content %}
    {% for el in tasks %}
        &amp;lt;div class="container"&amp;gt;
        &amp;lt;h3&amp;gt;{{ el.title }}&amp;lt;/h3&amp;gt;
        &amp;lt;p&amp;gt;{{ el.task }}&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
    {% endfor %}

{% endblock content %}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;blog.html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% extends 'base.html' %}
{% block content %}

    {% for el in notes %}
        &amp;lt;div class="container"&amp;gt;
        &amp;lt;h3&amp;gt;{{ el.title }}&amp;lt;/h3&amp;gt;
        &amp;lt;p&amp;gt;{{ el.task }}&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
    {% endfor %}

{% endblock content %}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;contacts.html&lt;br&gt;
(Here we use csrf_token, it is needed to protect against cross-site request forgery, each internal form should use it)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% extends 'base.html' %}
{% block content %}

    &amp;lt;form action="" method="post"&amp;gt;
        {% csrf_token %}
        {{ form }}
        &amp;lt;input type="submit" value="Submit"&amp;gt;
    &amp;lt;/form&amp;gt;

{% endblock content %}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;about.html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% extends 'base.html' %}
{% block content %}
    {% for el in self %}
        &amp;lt;div class="container"&amp;gt;
        &amp;lt;h3&amp;gt;{{ el.title }}&amp;lt;/h3&amp;gt;
        &amp;lt;p&amp;gt;{{ el.task }}&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
    {% endfor %}
{% endblock content %}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;success.html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h1&amp;gt;We have received your letter&amp;lt;/h1&amp;gt;
&amp;lt;p&amp;gt;We will consider it and we will answer you.&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's start the Django server and go to the site's admin panel, then go to the Tasks section. Fill in the fields and save:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AHgZow_e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6tsdo2h1hm1otqjwr7a7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AHgZow_e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6tsdo2h1hm1otqjwr7a7.png" alt="Image description" width="880" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our entry will be displayed on the website in the Home section:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ysSfFh6N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k7il5gnizolskpxotalz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ysSfFh6N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k7il5gnizolskpxotalz.png" alt="Image description" width="880" height="139"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open the Contact section and fill it in:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--an9SMIee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c9y354nlhvxmpqctikl9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--an9SMIee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c9y354nlhvxmpqctikl9.png" alt="Image description" width="478" height="756"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After sending, the following message will appear on the screen:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TEEC4d7W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mhzfedkyehw53rgcvilt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TEEC4d7W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mhzfedkyehw53rgcvilt.png" alt="Image description" width="812" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We go to the administrative panel of the site, then go to the Contact section and you can see your message:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UPbBkAn_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nk5rud76hg9cxi68z4rx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UPbBkAn_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nk5rud76hg9cxi68z4rx.png" alt="Image description" width="880" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HSz8rmlD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hpranvuev8uk1j382q0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HSz8rmlD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hpranvuev8uk1j382q0x.png" alt="Image description" width="880" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it, our tutorial project is over.&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
