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)