Как предварительно заполнить форму с параметрами URL (Django) - PullRequest
0 голосов
/ 21 июня 2019

Я хотел бы предварительно заполнить форму параметрами URL, но я не уверен, как мне настроить свои URL. Мне нужно заполнить несколько полей, так что использование параметров URL все еще лучший метод? В уроках, которые я просматривал, в большинстве случаев используются только 1 или 2 параметра из запроса GET. На мой взгляд, в настоящее время я работаю только с одним полем, так как у меня проблемы только с одним параметром. Вы можете видеть в модели формы другие поля, которые я хотел бы заполнить. Любая помощь с благодарностью!

views.py

def new_opportunity_confirm(request):
    form_class = OpportunityForm

    account_manager = request.GET.get('account_manager')

    form = form_class(initial={'account_manager': account_manager})

    return render(request, 'website/new_opportunity_confirm.html', {'form': form})

urls.py

 re_path(r'new_opportunity/new_opportunity_confirm/(?P<account_manager>\w+)/$', view=views.new_opportunity_confirm,
         name='new_opportunity_confirm'),

new_opportunity_confirm.html

<form action="" method="post" name="newOpportunityForm" id="newOpportunityForm">
                {% csrf_token %}
                <div class="field">
                    <label class="label">Account Manager:</label>
                    <div class="select">
                        <select name="account_manager" id="account_manager" required>
                            <option value="{{ form }}">{{ form }}</option>
                        </select>
                    </div>
                </div>

1 Ответ

0 голосов
/ 21 июня 2019

Зависит от того, хотите ли вы, чтобы ваши параметры были частью url или нет, и в вашем случае я бы посоветовал нет, но давайте посмотрим оба метода.

Для параметров GET (url? Var1 = poney & var2 =единорог): вам не нужно настраивать ваш URL.Джанго сделает всю работу за вас, вам просто нужно настроить то, что находится перед точкой допроса.Затем вы можете получить к ним доступ с помощью request.GET.get("var1") или request.GET.get("var1", "default"), если хотите получить значение по умолчанию, если оно не найдено.В вашем шаблоне вы можете получить к нему доступ с помощью {{ request.GET.var1 }}.

Для параметров в URL (url / poney / unicorn): вам нужно настроить URL для захвата нужной вам части, и вам нужно иметьпараметр в принимающем представлении, чтобы получить его в URL:

def new_opportunity_confirm(request, account_manager):

Затем вы можете получить к нему доступ, как и к любой другой переменной, и отправить его в свой шаблон, если вы хотите иметь к нему доступ.

Опять же, этот второй способ не соответствует тому, чего вы хотите достичь.Вы были на полпути, вы просто смешали немного обоих методов.

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