特別是,使用可選正則表達式的頁面。可選的,我的意思是下面的PAGE_RE。css在除兩個頁面以外的所有頁面上工作
我正在創建一個Wiki。如果用戶搜索一個術語,並且該術語尚不存在,那麼用戶將被重定向到編輯頁面,以便他們可以創建新內容。但是,只有在用戶登錄後纔會發生。要確定用戶是否已登錄,我檢查cookie。如果用戶沒有登錄(沒有cookie),那麼我重定向,而不是編輯頁面,以創建新的內容,但登錄頁面,由下面的Login類處理。用戶登錄後,會創建一個cookie,然後將其重定向到編輯頁面以創建它們最初搜索的內容。爲了記住他們的主題是什麼,所以我可以在登錄後重定向,我將主題(形式爲'/topic'
)發送到登錄類,它在get
和post
方法中作爲參數接收。如果用戶剛剛來到網站並正常登錄,他們被重定向到主頁,但在這種情況下,因爲主題已被get
和post
收到,而不是None
,我使用下面的行self.redirect('/edit/%s' % topic[1:])
發送他們到他們原來的目的地。問題是,CSS不適用於下面使用PAGE_RE的兩個URL。 JsFiddler4顯示有404個涉及/login/css/wiki.css
。它突然點擊一段時間後,該網址不是登錄頁面的網址,當它收到額外的'主題'參數。 EditPage
也是這種情況。如果有時候他們有些不同,我怎樣才能讓css在這些頁面/ url上工作?我不知道發生了多少事情,然後我下載並運行JsFiddler4並找出它。我正在使用Google App Engine,webapp2,jinja2。任何幫助非常感謝。除了這兩頁之外,css還能正常工作。
這段代碼是無序和不完整的,但我希望這是足夠
PAGE_RE = r'(/?(?:[A-Za-z0-9_-]+/?)*)'
app = webapp2.WSGIApplication([
('/signup', Register),
('/logout', Logout),
('/login' + PAGE_RE, Login),
('/edit' + PAGE_RE, EditPage),
('/', Front),
(PAGE_RE, WikiPage),
], debug=True)
class Login(Main):
""" Validate form and validate users cookie """
def get(self, topic):
self.render('login.html', error={})
def post(self, topic):
username = self.request.get('username')
password = self.request.get('password')
if not username or not self.valid(user=username):
self.login_error(user=username)
elif not password or not self.valid(pw=password):
self.login_error(user=username)
elif not self.user_exists(username):
self.render('login.html', error={'no_user':'That user does not exist'})
else:
self.login(username, password, topic=topic)
def login(self, name, pw, topic):
user_hash = User.get_user_hash(name)
if self.valid_pw(name, pw, user_hash):
self.create_secure_cookie('user_id', name)
if topic:
self.redirect('/edit/%s' % topic[1:])
else:
self.redirect('/')
else:
self.login_error(user=name)
def login_error(self, user):
self.render('login.html', username=user, error={'login': errors['login']})
def valid_pw(self, name, pw, user_hash):
salt = user_hash.split('|')[0]
return user_hash == self.create_user_hash(name, pw, salt)
當您在Inspector中查看不工作的頁面時,它在什麼路徑查找CSS文件? –
有趣..剛剛檢查,當我直接進入登錄頁面(正常情況下),它看起來在正確的位置'/css/wiki.css'。但是,當我將搜索頁面中的登錄頁面重定向到主題,並將其傳遞給Login類時,它會在「login/css/wiki.css」中搜索css文件。我目前不知道爲什麼會發生這種情況..猜猜我必須找出何時何地將「登錄」部分添加到路徑中。 – Totem