Django展示个人信息
一 编写视图类mysite/account/views.py
from django.shortcuts import render
from django.http import HttpResponse
# Django默认的用户认证和管理中的两个方法
from django.contrib.auth import authenticate, login
from .forms import LoginForm,RegistrationForm,UserProfileForm
from .models import UserProfile, UserInfo
from django.contrib.auth.models import User
# 引入装饰器函数
from django.contrib.auth.decorators import login_required
# 将没有登录的用户转到登录界面
@login_required(login_url='/account/login/')
def myself(request):
user = User.objects.get(username=request.user.username)
userprofile = UserProfile.objects.get(user=user)
userinfo = UserInfo.objects.get(user=user)
return render(request, "account/myself.html", {"user":user, "userinfo":userinfo, "userprofile":userprofile})
二 编写模板mysite/templates/account/myself.html
{% extends "base.html" %}
{% block title %}我的信息{% endblock %}
{% block content %}
<div class="row text-center vertical-middle-sm">
<h1>我的信息</h1>
<div class="row">
<div class="col-md-6" >
<div class="row">
<div class="col-md-4 text-right"><span>用户名:</span></div>
<div class="col-md-8 text-left">{{user.username}}</div>
</div>
<div class="row">
<div class="col-md-4 text-right"><span>邮箱:</span></div>
<div class="col-md-8 text-left">{{user.email}}</div>
</div>
<div class="row">
<div class="col-md-4 text-right"><span>生日:</span></div>
<div class="col-md-8 text-left">{{userprofile.birth}}</div>
</div>
<div class="row">
<div class="col-md-4 text-right"><span>电话:</span></div>
<div class="col-md-8 text-left">{{userprofile.phone}}</div>
</div>
<div class="row">
<div class="col-md-4 text-right"><span>毕业学校:</span></div>
<div class="col-md-8 text-left">{{userinfo.school}}</div>
</div>
<div class="row">
<div class="col-md-4 text-right"><span>工作单位:</span></div>
<div class="col-md-8 text-left">{{userinfo.company}}</div>
</div>
<div class="row">
<div class="col-md-4 text-right"><span>职业:</span></div>
<div class="col-md-8 text-left">{{userinfo.profession}}</div>
</div>
<div class="row">
<div class="col-md-4 text-right"><span>地址:</span></div>
<div class="col-md-8 text-left">{{userinfo.address}}</div>
</div>
<div class="row">
<div class="col-md-4 text-right"><span>个人介绍:</span></div>
<div class="col-md-8 text-left">{{userinfo.aboutme}}</div>
</div>
</div>
</div>
</div>
{% endblock %}
三 编写URL——mysite/account/urls.py
from django.conf.urls import url
from . import views
from django.contrib.auth import views as auth_views
urlpatterns = [
# 自定义登录
# url(r'^login/$', views.user_login, name='user_login'),
# django内置的登录
url(r"^login/$", auth_views.login, name="user_login"),
url(r"^new-login/$", auth_views.login, {"template_name": "account/login.html"}),
url(r'^logout/$', auth_views.logout, {"template_name": "account/logout.html"}, name='user_logout'),
url(r'^register/$', views.register, name="user_register"),
# 给password_change方法传入post_change_redirect参数
url(r'^password-change/$', auth_views.password_change, {"post_change_redirect": "/account/password-change-done"},name='password_change'),
url(r'^password-change-done/$', auth_views.password_change_done, name='password_change_done'),
# 重置密码开始
url(r'^password-reset/$', auth_views.password_reset, {"template_name":"account/password_reset_form.html","subject_template_name":"account/password_reset_subject.txt", "email_template_name":"account/password_reset_email.html", "post_reset_redirect":"/account/password-reset-done"}, name="password_reset"),
url(r'^password-reset-done/$', auth_views.password_reset_done, {"template_name":"account/password_reset_done.html"}, name="password_reset_done"),
url(r'^password-reset-confirm/(?P<uidb64>[-\w]+)/(?P<token>[-\w]+)/$', auth_views.password_reset_confirm, {"template_name":"account/password_reset_confirm.html", "post_reset_redirect":"/account/password-reset-complete"}, name="password_reset_confirm"),
url(r'^password-reset-complete/$', auth_views.password_reset_complete, {"template_name":"account/password_reset_complete.html"}, name="password_reset_complete"),
# 重置密码结束
# 个人信息
url(r'^my-information/$', views.myself, name="my_information"),
]
四 测试