两个工程都是一模一样的格局,定义自己的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函数——》模板。