如何在 Django 项目中使用 URL 中的用户名,如 facebook 和 twitter?

How to use username in URL like facebook and twitter in Django project?

我正在做 django 项目。我有点学习它。所以我的项目有用户登录注销功能,我也想添加基于配置文件的用户管理系统。所以我想做的是,如果有人试图访问这个 link,我想显示用户个人资料

siteURL/username

所以我项目的 urls.py 文件有这些代码,

urlpatterns = [
    # url(r'^admin/', include(admin.site.urls)),

    # Robots.txt request
    url(r'^robots.txt', TemplateView.as_view(template_name="robots.txt", content_type="text/plain")),

    # Profile related requests
    url(r'^$', include('UserProfile.urls')),

    # Home page request
    url(r'^$', include('Homepage.urls')),


    # Accounts related requests
    url(r'^accounts/', include('Accounts.urls')),

]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

# handling error requests for 403, 404, 500 etc

handler404 = 'errorPages.views.error404'
handler500 = 'errorPages.views.error500'

我的 UserProfile 应用有 url.py 文件和代码,

urlpatterns = [
    # User Profile related requests

    url(r'^(?P<uname>.+?)/update$', User_Profile_Update.as_view()),

]

我的 class 文件的代码是,

class HC_User_Profile_Update(TemplateView):
    def get(self, request, *args, **kwargs):
        return render(request, "user_profile/profile_update.html"),

我的主页应用有 urls.py 文件和代码,

urlpatterns = [
    #Home page request
    url(r'^$', HomePage.as_view()),
]

和主页class文件,

class HomePage(TemplateView):
    def get(self, request):
        if request.user.is_authenticated():

            return render(request, "homepage/home.html", {'uname': request.user.uname})
        else:
            return render(request, "homepage/home.html")

我收到 Url 未找到的 404 错误。所以谁能告诉我我的 url 有什么问题吗?现在,我只想检查 url 是否呈现 html 页面。 url 我现在尝试访问的是

sitename/username/update

感谢您的宝贵时间。

尝试从项目的 urls.py 文件中删除 $。将您的 urls.py 文件更新为

urlpatterns = [
    # url(r'^admin/', include(admin.site.urls)),

    # Robots.txt request
    url(r'^robots.txt', TemplateView.as_view(template_name="robots.txt", content_type="text/plain")),

    # Profile related requests
    url(r'^', include('UserProfile.urls')),

    # Home page request
    url(r'^$', include('Homepage.urls')),


    # Accounts related requests
    url(r'^accounts/', include('Accounts.urls')),

]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

# handling error requests for 403, 404, 500 etc

handler404 = 'errorPages.views.error404'
handler500 = 'errorPages.views.error500'

希望它能奏效。