Django отображает исходный код вместо веб-страницы?

Ссылка скопирована
1 ответ

Я новичок в 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">×</span>     <h2>О нас</h2>     <p>Мы - интернет-магазин тортов, предлагаем Вам лучшие десерты для любого случая.</p>       <p>Находимся по адресу:</p>   </div> </div>    <div id="modal" class="modal">     <div class="modal-content">       <span class="close">×</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">×</span> <h2>О нас</h2> <p>Мы - интернет-магазин тортов, предлагаем Вам лучшие десерты для любого случая.</p> <p>Находимся по адресу:</p> </div> </div> <div id="modal" class="modal"> <div class="modal-content"> <span class="close">×</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?

  • Меня смущает ваша функция torts_1. В ней вы используете два разных способа передачи данных в шаблон, что априори неправильно.

    Попробуйте такой вариант:

    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)

  • Everything_is_bad, отображение html
  • Анастасия Foxman, cпасибо
  • Ответы:

    Ошибка в 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)

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Кирилл JS Ответ

    Для того чтобы Django правильно отображал веб-страницу, а не исходный код, необходимо убедиться, что у вас правильно настроены шаблоны и ваши представления.

    Во-первых, убедитесь, что у вас правильно настроены URL-адреса и представления в вашем приложении Django. Ваши представления должны возвращать HttpResponse, который содержит HTML-код вашей веб-страницы. Например:

    from django.http import HttpResponse
     
    def index(request):
        return HttpResponse("Привет, мир!")

    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': 'Мир'})

    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')],
            ...
        },
    ]

    TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], ... }, ]

    Если все это не помогло, убедитесь, что у вас правильно настроен ваш веб-сервер (например, Apache или Nginx) для обработки запросов к вашему приложению Django.

    Надеюсь, эти советы помогут вам исправить проблему с отображением исходного кода вместо веб-страницы в вашем приложении Django. Если у вас остались вопросы, пожалуйста, задайте их более конкретно для получения более точного ответа.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно