1. 程式人生 > >flask_route錯誤:AttributeError: 'function' object has no attribute 'route'

flask_route錯誤:AttributeError: 'function' object has no attribute 'route'

劃線 spa blue sof ros obj 下一個 dex ews

問題:

  路由完全正確,當只有一個名為home的函數處理這個路由時候,下一個路由處理函數,總是提示沒有這個rotue屬性

Traceback (most recent call last):
  File "E:/workspace/wei-move/manage.py", line 3, in <module>
    from app import app
  File "E:\workspace\wei-move\app\__init__.py", line 10, in <module>
    from app.home import home as home_blueprint
  File "E:\workspace\wei-move\app\home\__init__.py", line 7, in <module>
    import app.home.views
  File "E:\workspace\wei-move\app\home\views.py", line 16, in <module>
    @home.route(‘/login/‘)
AttributeError: ‘function‘ object has no attribute ‘route‘

問題原因:

  本質是home函數名和@home裝飾器有沖突,當取和裝飾器或者對應的app一樣的名字時候,只能對應一個home函數生效,後面的路由函數都將報錯處理

# coding:utf8

from flask import render_template as render, redirect, url_for
# render_template 返回模板
# redirect 路由重定向
# url_for 聯合路由重定向,指向對應app的url地址
from . import home

# 首頁
@home.route(‘/‘)
def home():
    return render(‘home/index.html‘)


# 登錄頁面
@home.route(‘/login/‘)
def login():
    return render(‘home/login.html‘)

那,如何解決這個問題?

  由於函數名和路由裝飾器名相同引起的錯誤,當把函數名和裝飾路由相同的名字替換成其他名字,一定要娶和路由裝飾器一樣的名字需要在前面加個下劃線,進行區分

# 首頁
@home.route(‘/‘)
def _home():
    return render(‘home/index.html‘)


# 登錄頁面
@home.route(‘/login/‘)
def login():
    return render(‘home/login.html‘)

flask_route錯誤:AttributeError: 'function' object has no attribute 'route'