Джанго; Не может отображать на главной странице заметки со страницы администратора - PullRequest
0 голосов
/ 19 января 2020

Я создаю свое первое приложение Django для заметок и пытаюсь вставить и отобразить заметки на главной странице. К сожалению, мне удалось только вставить их в базу данных, но я не могу отобразить их на главной странице.

Вот мой файл views.py:

from django.shortcuts import render, render_to_response
from django.template import RequestContext, loader
from django.http import HttpResponse
from .models import Note
from .forms import NoteForm

def home(request):
    notes = Note.objects
    template = loader.get_template('note.html')
    form = NoteForm(request.POST or None)
    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.save()

    context = {'notes': notes, 'form': form}
    return render(request, 'note.html', context)

И вот мой html файл:

<link href="http://codepen.io/edbond88/pen/CcgvA.css" media="screen" rel="stylesheet" type="text/css">
<style>
            body {<br />
              background: rgba(222,222,222,1);<br />
              margin: 20px;<br />
            }<br />
</style>
<h1>Notes App</h1>


<form method="POST" action="">
    {% csrf_token %}
    {{ form.as_p }}
    <td>&nbsp;</td>
<input type="submit" value="Add note">
</form>

Я пытаюсь сделать приложение из этого урока: https://pythonspot.com/django-tutorial-building-a-note-taking-app/

Ответы [ 3 ]

1 голос
/ 19 января 2020

попробуйте это:

return render(request, 'note.html', context=context)

вместо этого:

return render(request, 'note.html', context)

и это:

notes = Note.objects.all()

вместо этого:

notes = Note.objects
1 голос
/ 19 января 2020

Вам нужно Note.objects.all() вместо Note.objects в views.py :

def home(request):
    notes = Note.objects.all()
    template = loader.get_template('note.html')
    form = NoteForm(request.POST or None)
    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.save()

    context = {'notes': notes, 'form': form}
    return render(request, 'note.html', context)

, а также вам нужно перебрать их, чтобы отобразить в шаблоне:

<h1>Notes App</h1>

{% for note in notes %}
    <p>{{ note }}</p>
{% endfor %}
0 голосов
/ 19 января 2020

Первая проблема, которую я вижу, это то, что вы не добавили никаких действий в вашу форму. Атрибут action должен быть представлением, в которое вы хотите отправить форму.

Так вот что вы должны сделать в первую очередь:

<h1>Notes App</h1>

<form method="POST" action="whatever_your_url_for_this_page_is">
    {% csrf_token %}
    {{ form.as_p }}
    <td>&nbsp;</td>
    <input type="submit" value="Add note">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...