我有一個模型需要存儲將成爲Django環境一部分的URL。如果我存儲的是正常的URL,我會使用models.URLField
,並使用verify_exists
來確保URL實際存在。Django和測試本地URL存在
但是,這在開發中並沒有那麼好,因爲dev服務器是單線程的,它無限期掛起,因爲它不能一次處理兩個請求。
我希望做使用resolve()
東西,但我有困難,在那個文檔頁面的版本,這並不需要一個請求結束調整功能myview
,因爲我要檢查一個給定的本地URL可以從空白會話中解決,並沒有404被提出。
我希望用validator,像這樣的事情要做到這一點:
def validate_local_url(value):
try:
view, args, kwargs = resolve(value)
view(*args, **kwargs)
except Resolver404:
raise ValidationError(u'%s is not a local URL (not a valid URL)' % value)
except Http404:
raise ValidationError(u'%s is not a local URL (does not exist)' % value)
然而,如果沒有一個有效的request
對象被傳遞到kwargs
失敗。如何生成虛擬(空白)請求對象?我試過只用django.http.HttpRequest
。
你想成爲多嚴密?你是否想讓鏈接到一個丟失或刪除的記錄是不可能的,或者你只是想確保它與你的應用中的某個視圖相匹配? – 2010-08-10 17:06:18
@Jordan - 我想確保它與某些觀點相符,並且將'resolve'數字傳遞給視圖的參數不會引發'Http404'。 – 2010-08-10 17:21:03