Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django,预填充的_字段_Django_Django Models - Fatal编程技术网

Django,预填充的_字段

Django,预填充的_字段,django,django-models,Django,Django Models,我想知道在ModelAdmin之外是否有预填充的_字段 我想创建一个slugfield,其中值来自字段标题 问候,, 阿西诺克斯我不知道。 我使用javascript和AJAX做了类似的事情:当标题字段失去焦点时,带有它的AJAX请求被发送到应用程序中的url,该url返回一个slug。下面是javascript: <script type="text/javascript"> Event.observe(window, 'load', function() { form =

我想知道在ModelAdmin之外是否有预填充的_字段

我想创建一个slugfield,其中值来自字段标题

问候,, 阿西诺克斯

我不知道。 我使用javascript和AJAX做了类似的事情:当标题字段失去焦点时,带有它的AJAX请求被发送到应用程序中的url,该url返回一个slug。下面是javascript:

<script type="text/javascript">
Event.observe(window, 'load', function() {
    form = $("post_form");
    title = $('id_title');
    slug = $('id_slug');
    title.observe('blur', getSlug);
});

function getSlug() {
    var titleText = $F(title);
    ajax = new Ajax.Request("/blog/utils/get-slug", {
        'method': 'get',
        'parameters': {'title': titleText},
        'onSuccess': setSlug
    })

}
function setSlug(transport) {
    var slugText = transport.responseText;
    slug.value = slugText
}
</script>

事件。观察(窗口“加载”,函数(){
表格=$(“邮政表格”);
title=$('id_title');
slug=$('id_slug');
标题:观察('blur',getSlug);
});
函数getSlug(){
var titleText=$F(标题);
ajax=new ajax.Request(“/blog/utils/get slug”{
'方法':'获取',
参数:{'title':titleText},
“onSuccess”:设置凸耳
})
}
功能定位片(运输){
var slugText=transport.responseText;
slug.value=slugText
}
它使用Prototype,但您也可以轻松地使用jQuery或其他任何东西。 在Django方面,这里是AJAX请求指向的视图,以及一些帮助程序函数:

def GetSlug(request):
    """This Django view provides a url-friendly slug based on a given post title. 
    It helps avoid primary key violations by creating different slug names 
    for posts with the same title.It is designed to be called by an AJAX 
    request from within the admin interface."""

    title = request.GET.get('title', None)
    title = unquote(title)
    if not title:
        return HttpResponseNotFound("")
    result = findSlug(title)
    if not result:
        result = ""
    return HttpResponse(result)    

def findSlug(title):
        title = urlify(title)
        words = title.split('-')
        if len(words) > 5:
            title = "-".join(words[0:5])
            extraWords = words[5:]
        else: 
            extraWords = []

        def testSlug(slug):
            try:
                Post.objects.get(slug=slug)
            except Post.DoesNotExist:
                return slug
            return False
        #if slug does not already exist, return that
        if testSlug(title):
            return title
        #if title had extra words, add them one at a time and test that
        else:
            for word in extraWords:
                title = title + "-" + word
                if testSlug(title):
                    return title
        #if we've run out of words and slug is _still_ not unique, try incrementing: title-2, title-3, etc. 
        incrementor = 2
        while incrementor < 10:
            tempTitle = title + "-%d" + incrementor
            if testSlug(tempTitle):
                return tempTitle
        #if all else fails, punt to the user
        return None

def urlify(string):
    """This takes a string (say, a post title) and convets it to something url-friendly

    >>> title = "I read \"War & Peace\" to-day"
    >>> urlify(title)
    i-read-war-and-peace-to-day

    """
    string = string.lower().strip() #remove leading, trailing whitespace
    string = string.replace("&", "and")
    string = re.sub("[^a-z0-9- ]", "", string) #remove non-alphanumeric chars  (except dashes and spaces)
    string = re.sub("\W+", "-", string) #replace whitespace with "-"
    string = re.sub("-{2,}", "-", string) #remove double dahses
    return string 
def GetSlug(请求):
“”“此Django视图基于给定的文章标题提供url友好的slug。
它通过创建不同的slug名称来帮助避免主键冲突
用于具有相同标题的帖子。它被设计为由AJAX调用
来自管理界面内的请求。”“”
title=request.GET.GET('title',无)
title=unquote(标题)
如果不是标题:
返回HttpResponseNotFound(“”)
结果=findSlug(标题)
如果没有结果:
result=“”
返回HttpResponse(结果)
def findSlug(标题):
title=urlify(title)
单词=标题。拆分('-'))
如果len(字)>5:
title=“-”.join(单词[0:5])
extraWords=单词[5:]
其他:
外部词=[]
def测试段塞(段塞):
尝试:
Post.objects.get(slug=slug)
除Post.DoesNotExist外:
回流段塞
返回错误
#如果slug不存在,则返回该值
如果是testSlug(标题):
返回标题
#若标题中有额外的单词,那个么一次添加一个并测试它
其他:
对于外部单词:
title=title+“-”+单词
如果是testSlug(标题):
返回标题
#如果我们已经用光了单词,slug仍然不是唯一的,那么尝试递增:title-2、title-3,等等。
增量=2
当增量小于10时:
TENTITLE=标题+“-%d”+增量
如果testSlug(testitle):
归还诱惑物
#如果所有其他操作都失败,请向用户下注
一无所获
def urlify(字符串):
“”“这将获取一个字符串(例如,文章标题)并将其转换为url友好的内容
>>>title=“我今天读了\“战争与和平\”
>>>urlify(标题)
我今天读了《战争与和平》
"""
string=string.lower().strip()#删除前导和尾随空格
字符串=字符串。替换(“&”,“and”)
string=re.sub(“[^a-z0-9-]”,string)#删除非字母数字字符(破折号和空格除外)
string=re.sub(“\W+”,“-”,string)#将空格替换为“-”
string=re.sub(“-{2,}”,“-”,string)#删除双dahs
返回字符串
GetSlug视图非常努力地返回有用但唯一的内容,即使在标题可能已经存在于另一条记录中的情况下也是如此

据我所知,没有。 我使用javascript和AJAX做了类似的事情:当标题字段失去焦点时,带有它的AJAX请求被发送到应用程序中的url,该url返回一个slug。下面是javascript:

<script type="text/javascript">
Event.observe(window, 'load', function() {
    form = $("post_form");
    title = $('id_title');
    slug = $('id_slug');
    title.observe('blur', getSlug);
});

function getSlug() {
    var titleText = $F(title);
    ajax = new Ajax.Request("/blog/utils/get-slug", {
        'method': 'get',
        'parameters': {'title': titleText},
        'onSuccess': setSlug
    })

}
function setSlug(transport) {
    var slugText = transport.responseText;
    slug.value = slugText
}
</script>

事件。观察(窗口“加载”,函数(){
表格=$(“邮政表格”);
title=$('id_title');
slug=$('id_slug');
标题:观察('blur',getSlug);
});
函数getSlug(){
var titleText=$F(标题);
ajax=new ajax.Request(“/blog/utils/get slug”{
'方法':'获取',
参数:{'title':titleText},
“onSuccess”:设置凸耳
})
}
功能定位片(运输){
var slugText=transport.responseText;
slug.value=slugText
}
它使用Prototype,但您也可以轻松地使用jQuery或其他任何东西。 在Django方面,这里是AJAX请求指向的视图,以及一些帮助程序函数:

def GetSlug(request):
    """This Django view provides a url-friendly slug based on a given post title. 
    It helps avoid primary key violations by creating different slug names 
    for posts with the same title.It is designed to be called by an AJAX 
    request from within the admin interface."""

    title = request.GET.get('title', None)
    title = unquote(title)
    if not title:
        return HttpResponseNotFound("")
    result = findSlug(title)
    if not result:
        result = ""
    return HttpResponse(result)    

def findSlug(title):
        title = urlify(title)
        words = title.split('-')
        if len(words) > 5:
            title = "-".join(words[0:5])
            extraWords = words[5:]
        else: 
            extraWords = []

        def testSlug(slug):
            try:
                Post.objects.get(slug=slug)
            except Post.DoesNotExist:
                return slug
            return False
        #if slug does not already exist, return that
        if testSlug(title):
            return title
        #if title had extra words, add them one at a time and test that
        else:
            for word in extraWords:
                title = title + "-" + word
                if testSlug(title):
                    return title
        #if we've run out of words and slug is _still_ not unique, try incrementing: title-2, title-3, etc. 
        incrementor = 2
        while incrementor < 10:
            tempTitle = title + "-%d" + incrementor
            if testSlug(tempTitle):
                return tempTitle
        #if all else fails, punt to the user
        return None

def urlify(string):
    """This takes a string (say, a post title) and convets it to something url-friendly

    >>> title = "I read \"War & Peace\" to-day"
    >>> urlify(title)
    i-read-war-and-peace-to-day

    """
    string = string.lower().strip() #remove leading, trailing whitespace
    string = string.replace("&", "and")
    string = re.sub("[^a-z0-9- ]", "", string) #remove non-alphanumeric chars  (except dashes and spaces)
    string = re.sub("\W+", "-", string) #replace whitespace with "-"
    string = re.sub("-{2,}", "-", string) #remove double dahses
    return string 
def GetSlug(请求):
“”“此Django视图基于给定的文章标题提供url友好的slug。
它通过创建不同的slug名称来帮助避免主键冲突
用于具有相同标题的帖子。它被设计为由AJAX调用
来自管理界面内的请求。”“”
title=request.GET.GET('title',无)
title=unquote(标题)
如果不是标题:
返回HttpResponseNotFound(“”)
结果=findSlug(标题)
如果没有结果:
result=“”
返回HttpResponse(结果)
def findSlug(标题):
title=urlify(title)
单词=标题。拆分('-'))
如果len(字)>5:
title=“-”.join(单词[0:5])
extraWords=单词[5:]
其他:
外部词=[]
def测试段塞(段塞):
尝试:
Post.objects.get(slug=slug)
除Post.DoesNotExist外:
回流段塞
返回错误
#如果slug不存在,则返回该值
如果是testSlug(标题):
返回标题
#若标题中有额外的单词,那个么一次添加一个并测试它
其他:
对于外部单词:
title=title+“-”+单词
如果是testSlug(标题):
返回标题
#如果我们已经用光了单词,slug仍然不是唯一的,那么尝试递增:title-2、title-3,等等。
增量=2
当增量小于10时:
TENTITLE=标题+“-%d”+增量
如果testSlug(testitle):
归还诱惑物
#如果所有其他操作都失败,请向用户下注
复述