2015-04-08 2 views
2

У меня странная ситуация и понятия не имею, как найти проблему.Флажок Blueprint не работает

Я создал план, как этот

reportjobsmod = Blueprint('jobreports', __name__, url_prefix='/jobreports', template_folder='templates') 

И я создал маршруты, как следующее в файле views.py

@reportjobsmod.route('/crc_booksdue/', methods=['GET','POST']) 
def crc_booksdue(): 

Затем я использую

action="{{ url_for('jobreports.crc_booksdue') }}" 

в шаблоне ,

Все это прекрасно работает с еще несколькими маршрутами.

Однако, когда я пытаюсь добавить следующий маршрут к моему views.py

@reportjobsmod.route('/job_status/', methods=['GET','POST']) 
def jobs_status(): 

и введите

action="{{ url_for('jobreports.job_status') }}" 

в шаблоне я получаю routing.BuildError

Я попытался изменить имя маршрута, я заменил его на существующий маршрут (который работал нормально в шаблоне)

Я распечатал app.url_map, и jobreports.job_status существует вместе с другими маршрутами.

Что мне делать дальше?

+2

При использовании 'url_for' убедитесь, что вы используете имя функции. В вашем случае это должно быть 'url_for ('jobreports.jobs_status ') ', а не' url_for (' jobreports.job_status) ' – Zyber

+0

Да, похоже, это проблема. Если я изменю имя функции точно так же, как и маршрут, который он работает, спасибо. – jimscafe

ответ

1

Посмотрите на документацию url_for:

Создает URL для данной конечной точки с помощью метода при условии.

Это метод из вашего приложения, как это указано в приложении.

Ваша ошибка из

В url_for результаты функции в BuildError, когда текущее приложение не имеет URL для данной конечной точки и значения.

Параметр endpoint для функции указывается

конечной точки - конечная точка URL (имя функции)

В quickstart, есть также упоминание:

Чтобы создать URL-адрес определенной функции, вы можете использовать функцию url_for(). Он принимает имя функции как первый аргумент [...]

Смежные вопросы