【问题标题】:Django: Why is the Urls is different than what it should actually be?Django:为什么 Urls 与实际应该的不同?
【发布时间】:2020-06-26 17:07:43
【问题描述】:

我是 Django 新手。当我按下登录按钮时我正在制作一个简单的登录自定义系统

这是我的 view.py 登录代码

def login(request):
    if request.method == "POST" :
        username = request.POST['user']
        password = request.POST['psk']
        try:
            user = auth.authenticate(username=username, password=password)
            if user is not None:
                auth.login(request, user)
                return render(request, 'welcome.html')
            else:
                messages.error(request, 'Username or password didn\'t match.')

        except auth.ObjectDoesNotExist:
            print("invalid user")

    return render(request, 'login.html')

帐户应用的 URLs.py 如下所示:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # url(r'^index/$', home),
    url(r'^login/$', login),
    url(r'^logout/$', logout),
    url(r'^', custreg),
    
]

请帮助我,如果您需要其他任何东西来回答问题,请告诉我

【问题讨论】:

  • url(r'^welcome/$', login),路径应该在你的urlpatterns中定义。
  • 这将如何解决问题?这并没有解决问题@minglyu。我想我也应该添加一个视图

标签: python django django-views django-urls


【解决方案1】:

你需要做三件事:

  1. view.py 内创建一个welcome 函数,返回渲染输出
def welcome(request):
    return render(request, 'welcome.html')
  1. yourapp/urls.py 中添加以下行
from django.urls import path

# add an entry to urlpatterns
urlpatterns=[
    path('welcome/', view.welcome, name='welcome'),
    # rest of the patterns
]
  1. login 函数,而不是返回 html 页面,将用户重定向到 welcome 端点。
# imports
from django.shortcuts import redirect, reverse

# inside your login function
if user is not None:
    auth.login(request, user)
    # return render(request, 'welcome.html')
    return redirect(reverse('welcome'))

更改后重新启动您的应用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    相关资源
    最近更新 更多