Python新手使用的Django架站的16堂课 --- 第九章 (第三节)

django-admin startproject ch09site

cd ch09site/
python manage.py startapp mysite
vi ch09site/settings.py


ALLOWED_HOSTS = ['*']

'mysite',
'captcha',

'DIRS': [os.path.join(BASE_DIR, 'templates')],

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

cp -rf /home/jack/course/book/ch08www/static .
cp -rf /home/jack/course/book/ch08www/templates .

下面的内容参考:
https://blog.csdn.net/wowocpp/article/details/102687642
然后按照 下面的 第一节走一遍
https://blog.csdn.net/wowocpp/article/details/100931995

忽略 第二节

第三节
forms.py
class LoginForm(forms.Form):
    username = forms.CharField(label='姓名', max_length=10)
    password = forms.CharField(label='密码',widget=forms.PasswordInput())
增加个人资料
def userinfo(request):
    # template = get_template('userinfo.html')
    # html = template.render(locals())
    html = 'userinfo'

    return HttpResponse(html)

url:

url(r'^userinfo/$', views.userinfo),

userinfo.html


page269

views.login
from django.contrib.auth import authenticate
from django.contrib import auth
from django.contrib.auth.decorators import login_required
from django.contrib import messages

def login(request):
    if request.method == 'POST':
        login_form = forms.LoginForm(request.POST)
        if login_form.is_valid():
            login_name = request.POST['user_name'].strip()
            login_password = request.POST['password']
            user = authenticate(username=login_name,password=login_password)

            if user is not None:
                if user.is_active:
                    auth.login(request,user)
                    print 'success'
                    messages.add_message(request,messages.SUCCESSS,'成功登录了')
                    return redirect('/')
                else:
                    messages.add_message(request,messages.WARNING,'账号尚未启用')
            else:
                messages.add_message(request, messages.WARNING, '登录失败')

        else:
            messages.add_message(request, messages.INFO, '请检查输入的字段内容')


    else:
        login_form = forms.LoginForm()

    template = get_template('login.html')
    request_context = RequestContext(request)
    request_context.push(locals())
    html = template.render(request_context)
    response = HttpResponse(html)

    return response
view.index
def index(request, pid= None, del_pass=None):
    if request.user.is_authenticated():
        username = request.user.username

    messages.get_messages(request)

    template = get_template('index.html')

    request_context = RequestContext(request)
    request_context.push(locals())

    html = template.render(request_context)

    return HttpResponse(html)

##### views.logout

def logout(request):
    auth.logout(request)
    messages.add_message(request, messages.INFO, "成功注销了")
    response = redirect('/')

    return response
models.py
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    height = models.PositiveIntegerField(default=160)
    male = models.BooleanField(default=False)
    website = models.URLField(null=True)

    def __unicode__(self):
        return self.user.username
admin.py
admin.site.register(models.Profile)

python manage.py makemigrations
python manage.py migrate
python manage.py runserver 192.168.99.218:8080

page280

http://192.168.99.218:8080/admin/

在这里插入图片描述

page280

接着往下走:

views

from django.contrib.auth.models import User
@login_required(login_url='/login/')
def userinfo(request):
    if request.user.is_authenticated():
        username = request.user.username
        try:
            user = User.objects.get(username=username)
            userinfo = models.Profile.objects.get(user=user)
        except:
            pass
    template = get_template('userinfo.html')
    html = template.render(locals())
    return HttpResponse(html)
userinfo.html
<!-- login.html (ch09www project) -->
{% extends "base.html" %}
{% block title %}分享日记{% endblock %}
{% block content %}
<div class='container'>
<div class='row'>
    <div class='col-md-12'>
        <div class='panel panel-default'>
            <div class='panel-heading' align=center>
                <h3>用户信息</h3>
            </div>
        </div>
    </div>
</div>
<div class='row'>
    <div class='col-md-12'>
        <div class='panel panel-primary'>
            <div class='panel-heading' align=center>
                {{ userinfo.user.username | upper }}
            </div>
            <div class='panel panel-body'>
                电子邮件:{{ userinfo.user.email }}<br/>
                身高:{{ userinfo.height }} cm<br/>
                性别:{{ userinfo.male | yesno:"男生,女生"}}
            </div>
        </div>
    </div>
</div>
</div>
{% endblock %}

在这里插入图片描述

page282:

9.3.4 应用auth用户验证存取数据库
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值