Как отобразить результаты из базы данных на веб-странице Django? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть встроенная веб-страница в django, которая показывает все строки таблицы sqlite в картах начальной загрузки.В основном каждая карта представляет собой строку таблицы.Я хочу дать пользователю возможность фильтровать эти карты, поэтому на странице вместо отображения всех объектов в таблице базы данных должны отображаться только объекты, относящиеся к пользователю.Результат поиска может отображаться по другому URL, он не имеет значения.

Я могу создать HTML-форму для получения информации от пользователя и написать функцию Python, которая выполняет поиск в базе данных и распечатывает определенные строки на основедля входного ключевого слова, но я не могу заставить эти вещи работать вместе.

Любая подсказка или фрагмент кода будет большой помощью, к сожалению, я ничего не знаю о php, так что если есть способ сделать это без негобыло бы замечательно.Спасибо всем.

# this is my view function, it shows all the objects in the table at a #specific URL

def index_u(request):
    universities = University.objects.all()
    return render(request, 'index_uni.html', {'universities': universities})
/* this is index_uni.html */

{% block content %}
    <div class="row">
        {% for university in universities %}
        <div class="col">
            <div class="card" style="width: 18rem;">
                <img src="{{ university.image_url}}" class="card-img-top">
                <div class="card-body">
                    <h5 class="card-title">{{university.name}}</h5>
                    <p class="card-text">{{university.region}}</p>
                    <a href="{{university.page_url}}" target="_blank">Go</a>
                </div>
            </div>
        </div>
        {% endfor %}
    </div>
{% endblock %}
#this function takes an input and diplays specific rows
#I don't know how make this works in the html page, it works fine in terminal
def search_data():
    region_choice = input("insert region here: ")
    command = "SELECT name FROM university_university WHERE region = ?;"
    c.execute(command, [region_choice])
    for row in c:
        print(row)
#here my model
class University(models.Model):
    name = models.CharField(max_length=58, default=True)
    city = models.CharField(max_length=58, default=True)
    region = models.CharField(max_length=58, default=True)
    country = models.CharField(max_length=58, default=True)
    number_of_students = models.IntegerField(default=True)
    image_url = models.CharField(max_length=2083, default=True)
    is_public = models.BooleanField(default=True)
    ranking = models.IntegerField(default=True)
    colleges = models.BooleanField(default=True)
    scholarship = models.BooleanField(default=True)
    uni_canteen = models.BooleanField(default=True)
    page_url = models.CharField(max_length=2083, default=True)

1 Ответ

1 голос
/ 24 июня 2019

Вы можете сделать запрос с помощью:

def index_u(request):
    region = request.GET.get('region')
    universities = University.objects.all()
    if region is not None:
        universities = universities.<b>filter(region=region)</b>
    return render(request, 'index_uni.html', {'universities': universities})

Затем вы можете создать, например, форму, например:

<form method="get" action="url-of-index_u">
    <input type="text" name="region">
    <input type="submit">
</form>
<! --  render the universities -->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...