Django - перенаправить на просмотр после нажатия на любимую ссылку - PullRequest
0 голосов
/ 21 февраля 2020

В моем приложении я хочу создать любимую систему:

  • URL-адрес пользователя
  • некоторые данные рассчитываются
  • , затем пользователь может добавить эту ссылку в избранное

После нажатия кнопки «Добавить» пользователь перенаправляется на другую конечную точку, которая возвращает все свои избранные ссылки. На данный момент я хочу добавить возможность, позволяющую пользователю щелкнуть один из его избранных, вернуться в другое представление и вычислить некоторые данные.

My views.py

def home(request):
    """this function returns form which allows user to input link"""
    if request.method =='POST'
        url = request.POST['url']
        request.session['url'] = url
        return redirect('bokeh')
    return render(request,'base.html')

После этого возвращается bokeh. html и имеет некоторые данные, такие как диаграммы

def bokeh(request):
    url = request.session.get('url')
    cl = CalculationLogic()
    return cl.get_data_from_url(request,url)

В этом представлении есть кнопка, которая позволяет добавить в любимое. После нажатия вызывается метод:

def favorites(request):
    url = request.session.get('url')
    repo = Repository(url=url,user=request.user)
    repo.save()
    repo.repositorys.add(request.user) #adding value to ManyToMany field
    user = User.objects.get(username=request.user.username)
    repos = user.users.all() #return all url which current user has in favorites
    return render(request,'favorites.html',{'repos':repos})

И в моих избранных. html

{% extends 'bokeh.html' %}

{% block content %}

<h1>Favorites repositorys for {{ user }}</h1>
{% for r in repos %}
    <br><a href="{% url 'bokeh' %}">{{ r }}</a>
{% endfor %}

{% endblock %}

Итак, на этом этапе я отображаю все избранные пользователя РЕПО. После нажатия на одну из них я хочу go вернуться к боке и вернуть разные данные, основанные на щелчке по URL. Есть ли простой способ решить эту проблему?

1 Ответ

1 голос
/ 21 февраля 2020

Возможно, вы захотите передать идентификатор репо в качестве параметра GET, например:

{% for r in repos %}
    <br><a href="{% url 'bokeh' %}?repo_id={{r.id}}">{{ r }}</a>
{% endfor %}

А затем в views.py что-то вроде:

def bokeh(request):
    repo = request.GET.get('repo_id')
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...