如何将url传递给django

时间:2015-12-17 06:56:16

标签: django

在查找如何将在网址中捕获的var传递给我的视图时遇到一些麻烦。

说我有这样的模特......

title = models.CharField()

和......的标题。

title = 'this is a post'
那么django会如何捕获URL中的内容......

url/this_is_a_post/

并像这样查找模型字段......

x = Post.objects.get(title ='这是帖子')

我有另一个网址正在捕获其中包含空格的名称,当我使用带有" _"&#的网址时,它会正确查找,但在此处它告诉我没有匹配的查询。我试图查看文档,但我找不到任何东西,虽然我知道它必须在那里,某处。

2 个答案:

答案 0 :(得分:2)

在模型中使用两个文件,比如说;

class Post(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100)

在保存你的帖子的同时,你也应该保存slug;

在观点中;

from django.template.defaultfilters import slugify

post = Post.objects.create(title=title, slug=slugify(title))

这个slu will对每个帖子都是独一无二的。

在urls.py

url(r'^(?P<slug>[\w-]+)/$', 'myapp.views.post_detail', name='post_detail'),

在views.py

def post_detail(request, slug):
    x = Post.objects.get(slug=slug)

答案 1 :(得分:0)

在models.py中:

title = models.SlugField(unique=True)
在urls.py中

 urlpatterns = [
    ...
    url(r'^(?P<title>\d+)/$', views.article_view, name = 'article_detail'),
    ...
    ]
在views.py中

def article_view(request, title):
    ...
    article = get_object_or_404(Article, title=title)
    ...
template.html中的

<a href="{% url 'article_detail' title=article.title %}">