兩個工程都是一模一樣的格局,定義自己的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函數——》模板。