版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/85449933
一 优化导航栏
1 增加文章以及注册的入口,修改代码mysite/templates/header.html
<!--模板中声明引入静态文件的标签,只有使用它,static标签才能使用-->
{% load staticfiles %}
<div class="container">
<nav class="navbar navbar-default" role="navigation">
<div class="navbar-header">
<a class="navbar-brand" href="https://blog.csdn.net/chengqiuming"><img src="{% static '/images/logo.png' %}" width="100px"></a>
</div>
<div>
<ul class="nav navbar-nav" role="navigation">
<!--blog是urlpatterns中定义的namespace,blog_title是视图函数-->
<li><a href="{% url 'blog:blog_title' %}">博客</a></li>
<!-- 增加文章入口-->
<li><a href="{% url 'article:article_titles' %}">文章</a></li>
</ul>
<ul class="nav navbar-nav navbar-right" style="margin-right:10px">
{% if user.is_authenticated %}
<li>
<div class="dropdown" style="margin-top:8px">
<button class='btn btn-default dropdown-toggle' type='button' id='dropdownMenu' data-toggle='dropdown'>{{ user.username }}<span class='caret'></span></button>
<ul class="dropdown-menu">
<li><a href="{% url 'account:password_change' %}">修改密码</a></li>
<li><a href="{% url 'account:my_information' %}">个人信息</a></li>
<li><a href="{% url 'article:article_column' %}">后台管理</a></li>
</ul>
</div>
</li>
<li><a href="#">{{ user.username }}</a></li>
<li><a href="{% url 'account:user_logout' %}">退出</a></li>
{% else %}
<li><a href="{% url 'account:user_login' %}">登录</a></li>
<!-- 增加注册入口-->
<li><a href="{% url 'account:user_register' %}">注册</a></li>
{% endif %}
</ul>
</div>
</nav>
</div>
<script src="{% static 'js/jquery.js'%}"></script>
<script src="{% static 'js/bootstrap.js' %}"></script>
2 测试结果
二 设计主页
1 配置项目URL——mysite/mysite/urls.py
from django.conf.urls import url, include
from django.contrib import admin
from django.views.generic import TemplateView
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include("blog.urls", namespace="blog", app_name="blog")),
url(r'^account/', include("account.urls", namespace='account', app_name='account')),
url(r'^pwd_reset/', include("password_reset.urls", namespace='pwd_reset', app_name='pwd_reset')),
url(r'^article/', include('article.urls', namespace='article', app_name='article')),
# 这里用到了通用模板,是主页的入口地址
url(r'^home/', TemplateView.as_view(template_name="home.html"), name="home"),
]
2 创建主页
{% extends "base.html" %}
{% block title %}主页{% endblock %}
{% block content %}
<div class="text-center">
<h1>欢迎您</h1>
<h3>生命短暂,您需要不断提升自己!</h3>
<h2>Python使得程序员的生命更精彩!</h2>
{% load staticfiles %}
<img src="{% static 'images/python.jpg' %}">
</div>
{% endblock %}
3 测试
不用编写视图函数。这就是模板视图的神奇。
三 增加主页入口
<ul class="nav navbar-nav" role="navigation">
<!-- 增加主页入口-->
<li><a href="{% url 'home' %}">主页</a></li>
<!--blog是urlpatterns中定义的namespace,blog_title是视图函数-->
<li><a href="{% url 'blog:blog_title' %}">博客</a></li>
<li><a href="{% url 'article:article_titles' %}">文章</a></li>
</ul>
四 登录后跳转到主页
1 修改mysite/mysite/settings.py,核心代码如下:
# 登录后重定向到http://localhost:8000/home/页面
LOGIN_REDIRECT_URL = '/home/'
2 测试一下效果
浏览器输入:http://127.0.0.1:8000/account/login/
点击登录,进入主页
五 注册后跳转到登录页面
1 修改mysite/account/views.py
def register(request):
if request.method == "POST":
user_form = RegistrationForm(request.POST)
userprofile_form = UserProfileForm(request.POST)
if user_form.is_valid()*userprofile_form.is_valid():
new_user = user_form.save(commit=False)
new_user.set_password(user_form.cleaned_data['password'])
new_user.save()
new_profile = userprofile_form.save(commit=False)
new_profile.user = new_user
new_profile.save()
UserInfo.objects.create(user=new_user)
# return HttpResponse("注册成功!")
# 注册后跳转到登录页面
return HttpResponseRedirect(reverse("account:user_login"))
else:
return HttpResponse("对不起,你不能注册.")
else:
user_form = RegistrationForm()
userprofile_form = UserProfileForm()
return render(request, "account/register.html", {"form": user_form, "profile":userprofile_form})
2 测试
点击注册,跳转到登录页面