Django сайт, который добавляет имя пользователя на изображение приветствия, как запретить Не имена и как запретить доступ к странице "/pic"?

Я пытаюсь сделать сайт на django, который принимает имя пользователя и добавляет его к поздравительной картинке. Сейчас я использую return return FileResponse(i_mg) для показа картинки с именем пользователя на другой странице, которая называется pic.html, но я обнаружил, что это бесполезно, потому что каждый может зайти на страницу напрямую, и сайт покажет, что имя - None

как я могу использовать уникальный URL для каждого пользователя и отказаться от None name ?

это мой views.py

from django.shortcuts import render
from .models import Name
from django.shortcuts import redirect
from PIL import Image,ImageDraw , ImageFont
from django.http import FileResponse,HttpResponse
# Create your views here.

def Home(request):

        return render(request , 'index.html')

def Show(request):
        name_input = str(request.POST.get('user_name'))

        img = Image.open("C:\\Users\\kmm\\Desktop\\my_django_stuff\\Eid_G\\files\\covers\\mypic.png")

        d = ImageDraw.Draw(img)

        fnt = ImageFont.truetype('C:\\Users\\kmm\\Desktop\\fonts\\static\Cairo-Bold.ttf',40)

        message = name_input

        d.text((540,1020),message, font=fnt, fill=(237, 185, 117),anchor="ms")

        img.save('Images/'+name_input+'.png')
        save_in_model = Name(massenger_name=name_input,image=name_input+'.png')

        save_in_model.save()
        i_mg = open('Images/'+name_input+'.png','rb')

        if name_input is None:
            return redirect(Home)
        else:
            return FileResponse(i_mg)

это мой urls.py

from django.contrib import admin
from django.urls import path
from Eid_Post import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.Home),
    path('pic',views.Show)
]

urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

это мой index.html

<!DOCTYPE html>
<html lang="en" dir="rtl">
  <head>
    <meta charset="utf-8">
    <title></title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
    {% load static %}
    <link rel="stylesheet" href="{% static 'CSS/style.css' %}">
  </head>
  <body>
    <div id="form">
      <form class="row" method="POST" enctype="multipart/form-data" action="pic" >
        {% csrf_token %}
          <div class="">
            <input type="textarea" class="form-control" placeholder="أكتب أسمك (مثلا/أخوكم عبدالله العتيبي)" id="text_name" name="user_name" required>
          </div>
          <div class="col-auto">
            <button type="submit" class="btn btn-primary mb-3" id="button">حمل الصورة</button>
          </div>
      </form>
    </div>
  </body>
</html>

и это мой models.py

from django.db import models
# Create your models here.

class Name(models.Model):
    massenger_name = models.CharField(max_length=255,null=True,blank=True)
    action_time = models.DateTimeField(auto_now_add=True)
    image = models.ImageField(upload_to='Eid_G/images/',blank=True,null=True)

    def __str__(self):
        return str(self.massenger_name)
Вернуться на верх