Django отображает исходный код вместо веб-страницы?
Я новичок в django. Буду признателен за любую помощь. Он отображает исходный код вместо веб-страницы. Если быть точным, базовую страницу (1_tort.html).
Views
def torts_1(request,id): torts_1=Cake.objects.filter(id=id) # Получите информацию о текущем торте по ID cake = Cake.objects.get(id=id) if request.method == 'POST': form = CakeOrderForm(request.POST) if form.is_valid(): # Подставьте название торта в форму перед сохранением form.instance.cake_name = cake.name form.save() # Дополнительные действия после сохранения (например, перенаправление на другую страницу) return redirect('order_list') else: form = CakeOrderForm() list={ 'torts_1':torts_1 } return render(request,'1_tort.html', {'form': form} ,list) |
def torts_1(request,id): torts_1=Cake.objects.filter(id=id) # Получите информацию о текущем торте по ID cake = Cake.objects.get(id=id) if request.method == 'POST': form = CakeOrderForm(request.POST) if form.is_valid(): # Подставьте название торта в форму перед сохранением form.instance.cake_name = cake.name form.save() # Дополнительные действия после сохранения (например, перенаправление на другую страницу) return redirect('order_list') else: form = CakeOrderForm() list={ 'torts_1':torts_1 } return render(request,'1_tort.html', {'form': form} ,list)
html
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link rel="stylesheet" href="{% static '/css/style.css'%}"><title>Document</title> </head> <body> <div class="header"> <meta name="viewport" content="width=device-width, initial-scale=1"> <section class="top-nav"> <div class="logo"> <img src="{% static '/img/logo.svg'%}" alt=""> </div> <input id="menu-toggle" type="checkbox" /> <label class='menu-button-container' for="menu-toggle"> <div class='menu-button'></div> </label> <ul class="menu"> <li><a href="{%url 'index'%}">Главная</a></li> <li><a href="">Акции</a></li> <li><p id="openModal2">О нас</p></li> <li><p id="openModal">Контакты</p></li> </ul> <div class="containerr"> <div id="modal2" class="modal2"> <div class="modal2-content"> <span class="close2">&times;</span> <h2>О нас</h2> <p>Мы - интернет-магазин тортов, предлагаем Вам лучшие десерты для любого случая.</p> <p>Находимся по адресу:</p> </div> </div> <div id="modal" class="modal"> <div class="modal-content"> <span class="close">&times;</span> <h2>Контакты кондитерского магазина</h2> <p>Телефон: 8 (800) 123-45-67</p> <p>Email: info@bakery.com</p> </div> </div> </div> <div class="zakaz"> <div class="button_zakaz"> <a href="">Заказать торт</a> </div></div> </section> </div> <div class="center"> <div class="tort_center"> {%for i in torts_1%} <div class="tort_img"><img src="{{i.photo.url}}"alt=""></div> <div class="description"> <div class="price"> <h1>{{i.name}}</h1> <h3>{{i.price}} p.</h3> <p>Вес</p> <div class="weght"><p>2000г</p></div> <div class="_button_zakaz"><a href="">Заказать торт</a></div> </div> {%endfor%} </div> </div> </div> <div class="footer"> <div class=logo_footer><img src="{% static 'img/unnamed.png'%}" alt=""></div> <div class="links"> <ul> <li><a href="">Главная</a></li> <li><a href="">Акции</a></li> <li><p id="openModal22">О нас</p></li> <li><p id="openModal222">Контакты</p></li> </ul></div> </div> <script src="{% static 'js/script.js'%}"></script> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Сохранить</button> </form> </body> </html> |
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> <link rel="stylesheet" href="{% static '/css/style.css'%}"><title>Document</title> </head> <body> <div class="header"> <meta name="viewport" content="width=device-width, initial-scale=1"> <section class="top-nav"> <div class="logo"> <img src="{% static '/img/logo.svg'%}" alt=""> </div> <input id="menu-toggle" type="checkbox" /> <label class='menu-button-container' for="menu-toggle"> <div class='menu-button'></div> </label> <ul class="menu"> <li><a href="{%url 'index'%}">Главная</a></li> <li><a href="">Акции</a></li> <li><p id="openModal2">О нас</p></li> <li><p id="openModal">Контакты</p></li> </ul> <div class="containerr"> <div id="modal2" class="modal2"> <div class="modal2-content"> <span class="close2">&times;</span> <h2>О нас</h2> <p>Мы - интернет-магазин тортов, предлагаем Вам лучшие десерты для любого случая.</p> <p>Находимся по адресу:</p> </div> </div> <div id="modal" class="modal"> <div class="modal-content"> <span class="close">&times;</span> <h2>Контакты кондитерского магазина</h2> <p>Телефон: 8 (800) 123-45-67</p> <p>Email: info@bakery.com</p> </div> </div> </div> <div class="zakaz"> <div class="button_zakaz"> <a href="">Заказать торт</a> </div></div> </section> </div> <div class="center"> <div class="tort_center"> {%for i in torts_1%} <div class="tort_img"><img src="{{i.photo.url}}"alt=""></div> <div class="description"> <div class="price"> <h1>{{i.name}}</h1> <h3>{{i.price}} p.</h3> <p>Вес</p> <div class="weght"><p>2000г</p></div> <div class="_button_zakaz"><a href="">Заказать торт</a></div> </div> {%endfor%} </div> </div> </div> <div class="footer"> <div class=logo_footer><img src="{% static 'img/unnamed.png'%}" alt=""></div> <div class="links"> <ul> <li><a href="">Главная</a></li> <li><a href="">Акции</a></li> <li><p id="openModal22">О нас</p></li> <li><p id="openModal222">Контакты</p></li> </ul></div> </div> <script src="{% static 'js/script.js'%}"></script> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Сохранить</button> </form> </body> </html>
urls
urlpatterns = [ path('admin/', admin.site.urls), path('', index,name='index'), path('torts/<int:id>/', torts, name = 'torts'), path('torts_1/<int:id>/',torts_1,name='torts_1') ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) |
urlpatterns = [ path('admin/', admin.site.urls), path('', index,name='index'), path('torts/<int:id>/', torts, name = 'torts'), path('torts_1/<int:id>/',torts_1,name='torts_1') ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Дополнительно:
какой запрос в строке браузера? в "исходный код" джанго шаблон или отрендеренный html?
Попробуйте такой вариант:
from django.shortcuts import render, redirect from .models import Cake from .forms import CakeOrderForm def torts_1(request, id): # Получаем информацию о текущем торте по ID cake = Cake.objects.get(id=id) if request.method == 'POST': form = CakeOrderForm(request.POST) if form.is_valid(): # Подставьте название торта в форму перед сохранением form.instance.cake_name = cake.name form.save() # Дополнительные действия после сохранения (например, перенаправление на другую страницу) return redirect('order_list') else: form = CakeOrderForm() context = { 'cake': cake, # Передаем объект торта в шаблон 'form': form } return render(request, '1_tort.html', context) |
from django.shortcuts import render, redirect from .models import Cake from .forms import CakeOrderForm def torts_1(request, id): # Получаем информацию о текущем торте по ID cake = Cake.objects.get(id=id) if request.method == 'POST': form = CakeOrderForm(request.POST) if form.is_valid(): # Подставьте название торта в форму перед сохранением form.instance.cake_name = cake.name form.save() # Дополнительные действия после сохранения (например, перенаправление на другую страницу) return redirect('order_list') else: form = CakeOrderForm() context = { 'cake': cake, # Передаем объект торта в шаблон 'form': form } return render(request, '1_tort.html', context)
Ответы:
Ошибка в render. return render(request,'1_tort.html', {'form': form} ,list)
Render не принимает несколько аргументов. Ты либо передаешь массив form либо list.
Удали list, а render измени на return render(request,'1_tort.html', {'form': form, 'torts_1': torts_1})
И будет работать.
просто добавь ключ 'form': form в словарь list и передавай в рендер только list
list={ 'torts_1':torts_1, 'form': form, } return render(request,'1_tort.html', list) |
list={ 'torts_1':torts_1, 'form': form, } return render(request,'1_tort.html', list)
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы Django правильно отображал веб-страницу, а не исходный код, необходимо убедиться, что у вас правильно настроены шаблоны и ваши представления.
Во-первых, убедитесь, что у вас правильно настроены URL-адреса и представления в вашем приложении Django. Ваши представления должны возвращать HttpResponse, который содержит HTML-код вашей веб-страницы. Например:
from django.http import HttpResponse def index(request): return HttpResponse("Привет, мир!")
Во-вторых, убедитесь, что у вас правильно настроены шаблоны. Создайте папку "templates" внутри вашего приложения и добавьте туда HTML-файлы с вашими шаблонами. В представлении используйте функцию render для загрузки шаблона и передачи данных в него. Например:
from django.shortcuts import render def index(request): return render(request, 'index.html', {'name': 'Мир'})
В-третьих, убедитесь, что у вас правильно настроен файл настроек settings.py. Убедитесь, что у вас указаны правильные пути к папкам с шаблонами и что шаблоны загружаются из правильных мест. Например:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], ... }, ]
Если все это не помогло, убедитесь, что у вас правильно настроен ваш веб-сервер (например, Apache или Nginx) для обработки запросов к вашему приложению Django.
Надеюсь, эти советы помогут вам исправить проблему с отображением исходного кода вместо веб-страницы в вашем приложении Django. Если у вас остались вопросы, пожалуйста, задайте их более конкретно для получения более точного ответа.