4
respostas

quando adiciono o '<int:receita_id>' no url.py meu servidor para de funcionar

fiz as modificações no index.html e também na views.py.

O problema está nesse código, quando eu retiro ele e salvo, o servidor volta.

'<int:receita_id>'

Como resolvo?

4 respostas

Oi Igor, tudo bem?

Consegue colar seu código da urls.py?

Viu se tem a vírgula no final da linha de cima?

urls.py:

from django.contrib import admin
from django.urls import path, include
from receitas import views

urlpatterns = [
    path('', views.index, name='index'),
    path('admin/', admin.site.urls),

views.py: from django.shortcuts import render, get_object_or_404, get_list_or_404 from .models import Receita

def index(request):


    receitas = Receita.objects.all()
    dados = {
        'receitas': receitas
    }
    return render(request, 'index.html',dados)

def receita(request, receita_id):
    receita = get_object_or_404(Receita, pk=receita_id)
    receita_a_exibir = {
        'receita': receita
    }
    return render(request, 'receita.html', receita_a_exibir)
index.html:
<!-- ##### Best Receipe Area Start ##### -->
<section class="best-receipe-area">
    <div class="container">
        <div class="row">
            {% if receitas %}
            {% for receita in receitas %}
            <!-- Single Best Receipe Area -->
            <div class="col-12 col-sm-16 col-lg-4">
                <div class="single-best-receipe-area mb-30">
                    <img src="{% static 'img/bg-img/foto_receita.png' %}"></img>
                    <div class="receipe-content">
                        <a href="{% url 'receita' %}">
                            <h5>{{ receita.nome_receita }}</h5>
                        </a>
                    </div>
                </div>
            </div>
            {% endfor %}
            {% else %}
            {% endif %}
        </div>
    </div>
</section>

menu.html:

                    <!-- Nav Start -->
                    <div class="classynav">
                        <ul>
                            <li><a href="{% url 'index' %}">Home</a></li>
                        </ul>

Oi Igor,

Acho que você confundiu os arquivos urls.py

Esse arquivo urls.py que você mostrou é do projeto. Ele fica no caminho alurareceita/urls.py

Nele ficam apenas o include do arquivo receitas/urls.py, e a configuração da página admin/:

from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('', include('receitas.urls')),
    path('admin/', admin.site.urls),
]

E é no arquivo receitas/urls.py que definimos as páginas do site propriamente dito:

from django.urls import path

from . import views


urlpatterns = [
    path('', views.index, name='index'),
    path('<int:receita_id>', views.receita, name='receita')
]

Igor, tudo bem?

Em index.html, a url está com um parâmetro faltando.

Seu código:

<div class="receipe-content">
  <a href="{% url 'receita' %}">
    <h5>{{ receita.nome_receita }}</h5>
  </a>
</div>

Com o parâmetro (que você definiu na view (receita_id)):

<div class="receipe-content">
  <a href="{% url 'receita' receita.id %}">

Pois, assim, você passa o parâmetro necessário para que a view receita funcione,

Espero ter ajudado :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software