Добавить данные из запроса POST в шаблон таблицы [Django, Python] - PullRequest
0 голосов
/ 19 апреля 2020

Я создаю табличную информацию о книге из базы данных SQLite и пытаюсь создать форму «Добавить новую книгу», чтобы она добавляла новую книгу в базу данных таблицы. Как добавить книгу и отобразить ее в таблице Информация о книге?

<div class="container-fluid">
    <!-- Add Book -->
    <div class="add-book">
        <h1>Add a Book</h1>
        <form action="/add_book" method="POST" class="add_more_book">
            {% csrf_token %}
            <p>
                <label for="title" id="title">Title:</label>
                <input type="text" name="title" class="form-control" id="input-title" />
            </p>
            <p>
                <label id="desc" for="desc">Description:</label>
                <textarea class="form-control" name="description" id="input-desc" rows="3"></textarea>
            </p>
            <button type="submit" class="btn shadow btn-primary" id="addbtn">
                Add
            </button>
        </form>
    </div>
    <!-- End of Add Book -->

    <!-- Book info -->
    <div class="book-info">
        <form action="/" method="POST">
            {% csrf_token %}
            <table class="table table-bordered">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>Title</th>
                        <th>Action</th>
                    </tr>
                </thead>
                <tbody>
                    {% for i in all_books_info %}
                    <tr>
                        <th scope="row">{{i.id}}</th>
                        <td>{{i.title}}</td>
                        <td><a href="/books/{{i.id}}">Views</a></td>
                    </tr>
                    {% endfor %}
                </tbody>
            </table>
        </form>
    </div>

1 Ответ

0 голосов
/ 19 апреля 2020

Допустим, у вас есть таблица с именем Bio в вашем файле models.py. Примерно так:

    class Bio(models.Model):
        author = models.CharField(max_length= 20, null=True)
        book = models.CharField(max_length= 20, null=True)
        title = models.CharField(max_length=50)
        desc = models.CharField(max_length=200)

Предполагается, что вы импортировали свои модели в начало файла views.py.

   from .models import *

* импортирует все модели из файла моделей. (Есть Причины, по которым вы можете или не хотите импортировать все модели в будущем.)

В файле views.py

    def processInfo(request):
        print(request.POST["title"]
        if len(str(request.POST["title"])) < 2:
            print("Needs more the 2 characters to submit")
        else:
            print("Meets rule")
            Bio.objects.create(title = request.POST["title"])

Распечатка предназначена для проверки того, получено ли что-нибудь. Вы всегда хотите сначала проверить, если вы не получаете пустую строку. Я использую len и другие инструменты для проверки https://www.w3schools.com/python/ref_func_len.asp Существует несколько способов создания и получения данных из моделей django. https://docs.djangoproject.com/en/3.0/topics/db/queries/

Наконец, для функции, которая отображает "/" в файле views.py. Получив искомые данные, верните их вместе с запросом и файлом html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...