Django URL 基于带空格的字符域?
Posted
技术标签:
【中文标题】Django URL 基于带空格的字符域?【英文标题】:Django URL based off a charfield with spaces? 【发布时间】:2015-08-05 02:42:26 【问题描述】:我目前有一个基于用户输入的列表名称的 url。列表名称。一切都查询并显示没有问题。但是,当用户输入空格作为列表名称时,浏览器不会很好地处理它。我已经意识到我需要对字符串进行 slugify,但不确定如何进行此实现。我有一些感觉,我在模型中添加了某种 slug 字段,然后查询 slug 字段名称以将其自身与渲染到页面的模型对象关联起来。我只是不确定如何编码。
型号
class newlist(models.Model):
user = models.ForeignKey(User)
list_name = models.CharField(max_length = 100,)
picture = models.ImageField(upload_to='profiles/', default = "/media/profiles/default.jpg")
def __str__(self):
return self.list_name
查看
def mylistpage(request, username, listname):
context = RequestContext(request)
#make sure that the user is authenticated
if username == request.user.username:
#If the user is authenticated, then perform the following functions to the page
if request.user.is_authenticated():
#Store the current user request object into a variable
user = User.objects.get(username=username)
#Store the list name to the item that starts with the url input
listname = request.user.newlist_set.filter(list_name__iexact=listname)
listitems = request.user.newlist_set.all()
if not listname:
return redirect('/notfound')
else:
return redirect('/notfound')
return render_to_response('listview.html', 'lista': listname, context)
网址
url(r'^user/(?P<username>\w+)/list/(?P<listname>\w+)/$', mylistpage, name='lists'),
【问题讨论】:
【参考方案1】:URL 中的空格不是一个好主意。
这个用例是SlugField
的典型候选者
slug 是某事物的短标签,仅包含字母、数字、下划线或连字符。它们通常用于 URL 中
所以基本上,在您的模型中,您将添加另一个名为 slug
的字段,并将其传递到 URL。
您可以使用名为 django-autoslug
的现成包来自动生成 slug。
这里有一些帖子可能会提供更多关于蛞蝓的见解:
What is a slug Why SlugField in django【讨论】:
以上是关于Django URL 基于带空格的字符域?的主要内容,如果未能解决你的问题,请参考以下文章