129-django工程中,在views函数里,让页面跳转到其他app的模板页面(跨app跳转)
2020-08-30 17:12 lzhshn 阅读(1686) 评论(0) 收藏 举报两个工程都是一模一样的格局,定义自己的urls.py文件,include到项目的根urls里,然后编写自己的views函数,自己的templates。
要实现跳转很简单,首先看原来的views函数:
from django.shortcuts import render, get_object_or_404, reverse
from django.http import HttpResponseRedirect, HttpResponse
from django.contrib.auth import authenticate
from django.contrib.auth.models import User
from .models import ExUser
from .forms import UserLoginForm, UserRegForm
def login(request):
if request.method != 'POST':
form = UserLoginForm
context = {'form': form}
return render(request, 'login.html', context)
else:
username = request.POST['username']
password = request.POST['password']
login_user = authenticate(request, username=username, password=password)
if login_user is not None:
return HttpResponseRedirect(reverse('simplesite:login_ok'))
else:
return HttpResponse('login wrong!')
可以发现,当登录成功后,需要跳转到其他app的页面,比如是一个登录成功后的页面。因为我们为注册和登录功能专门设置了一个app,而实际的内容肯定放在另一个app里,这就涉及到了跨app跳转。
具体的做法是:
先完成2个引用:
from django.shortcuts import render, get_object_or_404, reverse from django.http import HttpResponseRedirect, HttpResponse
然后使用写法:
return HttpResponseRedirect(reverse('simplesite:login_ok'))
最关键的写法是reverse里的内容:用引号包括,url的命名空间(通常等于app名称): 某个path的名称
完成这一步后,后续就是simplesite内部的逻辑,从url——》views函数——》模板。
浙公网安备 33010602011771号