Django对导航栏登录注册以及主页的优化

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 测试

访问http://127.0.0.1:8000/home/

不用编写视图函数。这就是模板视图的神奇。

三 增加主页入口

<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 测试

点击注册,跳转到登录页面

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/85449933