Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
Python 如何使用像这样的字符。Django 2.1中的用户名slug?_Python_Django_Django Templates_Django Urls_Django 2.1 - Fatal编程技术网

Python 如何使用像这样的字符。Django 2.1中的用户名slug?

Python 如何使用像这样的字符。Django 2.1中的用户名slug?,python,django,django-templates,django-urls,django-2.1,Python,Django,Django Templates,Django Urls,Django 2.1,我正在创建一个简单的web应用程序。用户假设注册并可以查看他们的个人资料。注册表单工作正常,用户可以完美注册 在forms.py中,当用户使用现有用户名注册时,我有一个函数来引发验证错误。问题就在这里。如果有一个用户名类型,例如“userone”,而另一个用户类型为“user.one”,则会使用“user.one”保存新用户。但是当用户想要访问他们的个人资料时,URL中就会出现问题。因为我使用用户名作为slug,所以URL中不存在点(.),这导致了问题 正如Django文档中提到的那样,我尝试过

我正在创建一个简单的web应用程序。用户假设注册并可以查看他们的个人资料。注册表单工作正常,用户可以完美注册

在forms.py中,当用户使用现有用户名注册时,我有一个函数来引发验证错误。问题就在这里。如果有一个用户名类型,例如“userone”,而另一个用户类型为“user.one”,则会使用“user.one”保存新用户。但是当用户想要访问他们的个人资料时,URL中就会出现问题。因为我使用用户名作为slug,所以URL中不存在点(.),这导致了问题

正如Django文档中提到的那样,我尝试过使用
re_path
,但仍然出现错误

forms.py以检查唯一用户名

    def clean_username(self):
    username = self.cleaned_data.get('username')
    email = self.cleaned_data.get('email')

    if username and User.objects.filter(username=username).exclude(email=email).count():
        raise forms.ValidationError('This username already exists')
    return username
views.py(注册类)

views.py(用于纵断面类)

url.py

urlpatterns = [
# user signup link
path('user/signup/', views.SignupView.as_view(), name='signup'),

. . . .. . . .. . . .. 

# user profile view
path('user/<slug:slug>/', views.ProfileView.as_view(), name='user_profile'),

]
urlpatterns=[
#用户注册链接
路径('user/signup/',views.SignupView.as_view(),name='signup'),
. . . .. . . .. . . .. 
#用户配置文件视图
路径('user/',views.ProfileView.as_view(),name='user_profile'),
]
HTML



对于这一点,什么是完美的方法

这里唯一的问题是您的URL模式不接受点。您可以将其更改为
str
,它接受任何内容:

path('user/<str:slug>/',
path('user/'),
如果您想对接受的内容更具选择性,也可以使用正则表达式:

re_path(r'user/(?P<slug>[\w.]+)/$', 
re_路径(r'user/(?P[\w.]+)/$”,

这里唯一的问题是您的URL模式不接受点。您可以将其更改为
str
,它接受任何内容:

path('user/<str:slug>/',
path('user/'),
如果您想对接受的内容更具选择性,也可以使用正则表达式:

re_path(r'user/(?P<slug>[\w.]+)/$', 
re_路径(r'user/(?P[\w.]+)/$”,

我检查了slug的验证程序。它接受字母、数字、下划线或连字符。我不确定,但我觉得您建议的正则表达式不完整。(请参阅:)抱歉,它缺少一个
+
,现已修复。我检查了slug的验证程序。它接受字母、数字、下划线或连字符。我不确定,但我感觉您建议的正则表达式不完整。(请参阅:)抱歉,它缺少一个
+
,现已修复。
re_path(r'user/(?P<slug>[\w.]+)/$',