正则表达式基于Django中的模型输入?

时间:2015-05-15 01:15:53

标签: regex django

如果我在我的数据库中创建一个由以下建模的新用户:

如果这个问题没有意义,我更想知道示例网址中的数据位于:url(r'^members/(?P<username>\w+)/$', 'profiles.views.single')

到底是什么以及如何创建这样的字段?

from django.db import models
from django.contrib.auth.models import User

class Address(models.Model):
    user = models.ForeignKey(User)
    street_address = models.CharField(max_length = 200)
    city = models.CharField(max_length = 100)
    state = models.CharField(max_length = 100)
    zipcode = models.IntegerField(max_length = 5)
    updated = models.DateTimeField(auto_now = True, auto_now_add = False)
    timestamp = models.DateTimeField(auto_now = False, auto_now_add = True)
    active = models.BooleanField(default = True)

    def __str__(self,):
        return (self.user)

如何才能根据该模型中的用户映射正则表达式URL?可能吗? 或者甚至是电话号码,如果我有一个电话号码字段。只是好奇,试图更好地理解正则表达式。谢谢!

我想要像

这样的东西
def single(request, username1):
    try:
        user = Address.objects.get(Address.user=username1)
        single_user = user
    except:
        raise Http404

    return render_to_response('single_user.html', locals(), context_instance=RequestContext(request))

使用: url(r'^members/(?P<username1>\w+)/$', 'profiles.views.single')

2 个答案:

答案 0 :(得分:0)

从这个问题的角度来看,正则表达式与模型无关。相反,Django会根据网址映射导入和调用视图。

查看与模特的交易。查看How Django processes a request

上的文档
url(r'^members/(?P<username>\w+)/$', 'profiles.views.single')

如果请求来到DOMAIN / members / username profiles.views.single,则会调用此视图。

有效的用户名格式为\w\w代表&#34;字符&#34;,通常是[A-Za-z0-9 _]

usernameUser模型的字段,来自django.contrib.auth.models

同时检查URL dispatcherRegular expression operations

更新

按用户名过滤

Address.objects.filter(user__username=username1) #user is a Foreignkey

对于常规字段

Address.objects.filter(field_to_filter=view_argument)

答案 1 :(得分:0)

您给出的示例代码唯一的错误就是如何执行查询:您不在括号内使用类名。

user = Address.objects.get(user=username1)

如果你没有那里的catch-all except子句,你会收到一个可能帮助你自己调试的SyntaxError:这就是为什么拥有它们是一个非常糟糕的主意。只捕获Address.DoesNotExist例外,甚至更好地使用get_object_or_404快捷方式。