簡體   English   中英

動態名稱作為Django中的一級URL路徑對象

[英]Dynamic names as first-level URL path objects in Django

我正在嘗試對確定URL是否可用作對象的第一級URL路徑的問題進行排序。 例如:如果以前不存在username_1,則www.myapp.com/username_1將可用。

我發現的一種解決方案是這種方法,但解決方案不正確。 驗證部分:

def clean_username(self):
        username = super(NewRegistrationForm, self).clean_username()
        try:    resolve(urlparse('/' + username + '/')[2])
        except Resolver404, e:
            return username

        raise ValidationError(_(u'This username does not create '
                                u'a valid URL.  Please choose '
                                u'another'))

總是會引發錯誤。 它似乎需要一種方法來檢查URL是否返回404。 我可以使用urllib,但是我想知道是否有更好的解決方案來解決這個問題?

非常感謝。

在這種情況下,無需涉及url(如果我了解您的操作正確的話)。

只需使用類似這樣的東西(假設Django 1.5或更高版本):

from django.contrib import auth

def clean_username(username):
    url = urlresolvers.reverse('your_view_name', kwargs=dict(username=username))
    match = urlresolvers.resolve(url)
    if match.view_name != 'your_view_name':
        raise ValidationError(_(
            u'This username does not create a valid URL.  Please choose another'))

    if auth.get_user_model().objects.filter(username__iexact=username):
        raise ValidationError(_(u'There is already a user with this username'))

    return username

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM