Django के साथ प्रवेश के बाद पुन: निर्देशित

वोट
1

मैंने अपने मुखपृष्ठ, स्थानीय होस्ट / mysite के रूप में एक प्रवेश-पेज सेट है। मैं प्रवेश कर सकते हैं और सफलतापूर्वक स्थानीय होस्ट / mysite / mainpage पर पुनः निर्देशित किया।

मुद्दा यह है कि मैं सिर्फ उदाहरण के लिए, URL के पथ दर्ज करके बस लॉगिन बायपास कर सकते हैं; मैं होमपेज पर जाएँ जहां प्रवेश-रूप है, तो मैं बस जोड़ / mainpage के लिए स्थानीय होस्ट / mysite / जो सफलतापूर्वक लोड स्थानीय होस्ट / mysite / mainpage।

आप कल्पना कर सकते हैं, यह महान नहीं है। किसी को पता है मैं गलत यहाँ क्या किया?

मेरे विचार

def index(request):
    if request.method == POST:
        form = AuthenticationForm(request, data=request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                messages.info(request, OK)
                return redirect('/mysite/mainpage')
            else:
                messages.error(request, NOT OK)

    form = AuthenticationForm()
    return render(request, 'mysite/login.html', {form:form})

मेरे urls.py

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^mainpage/$', views.main),
]
13/02/2020 को 22:03
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
1

आप उपयोग कर सकते हैं @login_requiredडेकोरेटर [Django-डॉक] अपने पर mainदृश्य। यह द्वारा पथ सेट पर रीडायरेक्ट करेगा LOGIN_URLसेटिंग [Django-डॉक] उपयोगकर्ता में लॉग इन करने:

# app/views.py

from django.contrib.auth.decorators import login_required

def index(request):
    # …

@login_required
def main(request):
    # …

और में settings.py:

# settings.py

# …
LOGIN_URL = 'index'
# …

संपादित करें : आप छोड़ सकते हैं ?next=, क्वेरी पैरामीटर की स्थापना द्वारा redirect_field_name=…करने के लिए पैरामीटर None:

@login_required(redirect_field_name=None)
def main(request):
    # …
13/02/2020 को 22:08
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more