1
resposta

Dúvida na criação de receitas

Percebi ao longo do treinamento que quando o usuário cria a receita, e ele publica, fica publicada apenas para ele, se eu quiser que essa publicação vá direto para o index eu tenho que entrar no admin e aceitar a publicação, como eu conseguiria fazer com que o próprio usuário conseguisse definir se ele quer ou não publicar a receita dele e deixar visível ou não para todos verem ela no index?

1 resposta

Olá Alexandre, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Entendo sua intenção de permitir que os usuários decidam se desejam publicar suas receitas imediatamente ou não. No entanto, é importante considerar a importância de um processo de aprovação administrativa para validar as informações antes de serem disponibilizadas publicamente. Ao ter um administrador revisando e aprovando as receitas antes de serem publicadas, você garante que o conteúdo seja adequado, preciso e relevante para os demais usuários. Isso ajuda a manter a qualidade do índice de receitas, evitando que informações errôneas, incompletas ou inadequadas sejam exibidas para todos. Dessa forma, ao envolver um administrador nesse fluxo de aprovação, você garante a confiabilidade e a qualidade do conteúdo disponível para os usuários do seu site. Isso contribui para a satisfação dos usuários, a reputação do seu site e a fidelidade da comunidade.

Portanto, recomendo que você mantenha o processo de aprovação por parte de um administrador. Essa abordagem equilibra a autonomia dos usuários com a necessidade de garantir informações confiáveis e relevantes para todos os visitantes do site e inclusive, é uma prática muito utilizada no mercado.

Todavia, caso ainda sim queira dar ao usuário o poder de publicação, segue os códigos abaixo para serem adicionados em templates/receitas/cria_receita.html e apps/receitas/views/receita.py na função cria_receita:

templates/receitas/cria_receita.html:


<div class="form-check">
        <input type="checkbox" mutiple class="form-check-input" id="publicada" name="publicada" value="{{ True }}">
        <label class="form-check-label" for="publicada">Publicar Receita</label>
</div>

apps/receitas/views/receita.py em cria_receita:


def cria_receita(request):
    if request.method == 'POST':
        nome_receita = request.POST['nome_receita']
        ingredientes = request.POST['ingredientes']
        modo_preparo = request.POST['modo_preparo']
        tempo_preparo = request.POST['tempo_preparo']
        rendimento = request.POST['rendimento']
        categoria = request.POST['categoria']
        foto_receita = request.FILES['foto_receita']
        if 'publicada' in request.POST:
            publicada = request.POST['publicada']
        else:
            publicada = False
        user = get_object_or_404(User, pk=request.user.id)
        receita = Receita.objects.create(pessoa=user,
                                         nome_receita=nome_receita, 
                                         ingredientes=ingredientes, 
                                         modo_preparo=modo_preparo,
                                         tempo_preparo=tempo_preparo, 
                                         rendimento=rendimento,
                                         categoria=categoria,
                                         foto_receita=foto_receita,
                                         publicada=publicada)
        receita.save()
        return redirect('dashboard')
    else:
        return render(request, 'receitas/cria_receita.html')

Após realizar as mudanças, salve os arquivos editados e inicie o servidor.

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

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