Python Django Url错误:以10为基数的int()的文本无效:';托尼';

Python Django Url错误:以10为基数的int()的文本无效:';托尼';,python,regex,django,django-views,django-urls,Python,Regex,Django,Django Views,Django Urls,我正在用用户创建一个小Django应用程序,我已经创建了自己的UserProfile模型。。但是我的URL有一些问题(至少我认为)。我认为我使用的正则表达式是错误的。请查看: 我得到的错误是: ValueError at /usr/tony/ invalid literal for int() with base 10: 'tony' 我的网址: url(r'^usr/(?P<username>\w+)/$', 'photocomp.apps.users.views.Userpr

我正在用用户创建一个小Django应用程序,我已经创建了自己的UserProfile模型。。但是我的URL有一些问题(至少我认为)。我认为我使用的正则表达式是错误的。请查看:

我得到的错误是:

ValueError at /usr/tony/

invalid literal for int() with base 10: 'tony'
我的网址:

url(r'^usr/(?P<username>\w+)/$', 'photocomp.apps.users.views.Userprofile'),
这是我的模型:

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

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    first_name = models.CharField(max_length="30", blank=True)
    last_name = models.CharField(max_length="30", blank=True)
    email = models.EmailField(blank=True)
    country = models.CharField(blank=True,max_length="30")
    date_of_birth = models.DateField(null=True)
    avatar = models.ImageField(null=True, upload_to="/avatar")
看起来您正在搜索用户的用户名属性。外键在django中用双下划线跨越

另外,
.get()
将抛出一个
DoesNotExist
异常。建议将查询包装在try:except块中,这样就不会对用户造成影响。

看起来您正在搜索用户的用户名属性。外键在django中用双下划线跨越

另外,
.get()
将抛出一个
DoesNotExist
异常。建议将查询包装在try:except块中,这样就不会对用户造成影响。

对于更干净的代码,请改用:

另外,为了清楚起见,我建议不要给视图和类取相同的名称。我会将此函数称为类似于
profile\u detail
。但这只是一个内务管理细节。

对于更干净的代码,请使用:

另外,为了清楚起见,我建议不要给视图和类取相同的名称。我会将此函数称为类似于
profile\u detail
。但这只是一个内务细节

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

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    first_name = models.CharField(max_length="30", blank=True)
    last_name = models.CharField(max_length="30", blank=True)
    email = models.EmailField(blank=True)
    country = models.CharField(blank=True,max_length="30")
    date_of_birth = models.DateField(null=True)
    avatar = models.ImageField(null=True, upload_to="/avatar")
u = UserProfile.objects.get(user__username=username)
def Userprofile(request, username):
    rc = context_instance=RequestContext(request)
    try:
      u = UserProfile.objects.get(user__username=username)
    except UserProfile.DoesNotExist:
      # maybe render an error page?? or an error message at least to the user
      # that the account doesn't exist for that username?
    return render_to_response("users/UserProfile.html",{'user':u},rc)
from django.shortcuts import get_object_or_404

def Userprofile(request):
    u = get_object_or_404(UserProfile, pk=1)