Day066 Django (二)

8_admin.py操作数据库

编辑admin.py(student/admin.py)

        # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    
    from django.contrib import admin
    from models import *
    
    # Register your models here.
    admin.site.register(Student)
      

创建账户密码(创建超级管理员)

        python manage.py createsuperuser
      

另一种方式: Tools --> run manage.py Task...

        createsuperuser
      

注意:第一次打开一般会提示报错,需要安装连接数据库的模块,按照提示的模块pip安装完,然后重新打开该窗口即可

重启服务器

浏览器访问后台管理页面

        http://127.0.0.1:8000/admin/
      

后台方式操作数据库

修改settings.py文件后台页面显示中文

        LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

修改为:


LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'
      

修改models.py文件后台显示对象属性值

        # -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.

class Student(models.Model):
    sname = models.CharField(max_length=20,unique=True)
    spwd = models.CharField(max_length=20,unique=True)

    def __unicode__(self):
        return u'Stu:%s,%s'%(self.sname,self.spwd)
      


9_案例5_查看所有学生信息

配置URL(student/urls.py)

        #coding=utf-8

from django.conf.urls import url
import views

urlpatterns = [
    url(r'^$',views.login_view),
    url(r'^login/',views.to_login_view),
    url(r'^register/',views.register_view),
    url(r'^show/',views.show_view),
]
      

编辑视图函数(student/views.py)

        #显示所有学生信息
def show_view(request):
    #查询所有学生信息
    stus = Stu.objects.all()

    return render(request,'show.html',{'stus':stus})
      

创建模板(templates/show.html)

        <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <table border="1" width="500px" cellspacing="0">
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>密码</th>
        </tr>
        {% for stu in stus %}
        <tr>
            <td>{{ forloop.counter }}</td>
            <td>{{ stu.sname }}</td>
            <td>{{ stu.spwd }}</td>
        </tr>
        {% endfor %}


    </table>


</body>
</html>

      

10_案例6_登录功能(连接MySQL数据库)

安装MySQL-python==1.2.5库

        #方式1:
    运行窗口:
    pip install wheel
    pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
    
#方式2:
    pycharm/settings/project interpreter中添加库
    
#方式3:
    pip2.7 install MySQL-python==1.2.5    # 可以不指定版本号
      

修改settings.py文件

        DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',#数据库连接器
            'NAME': 'logindemo',#数据库名称
            'HOST':'127.0.0.1',#数据库主机地址
            'PORT':'3306',#数据库端口
            'USER':'root',#数据库用户名
            'PASSWORD':'123456'#数据库密码
        }
    }
      

配置模型类(student/models.py)

        # -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.

class Stu(models.Model):
    sname = models.CharField(max_length=20,unique=True)
    spwd = models.CharField(max_length=20,unique=True)

    def __str__(self):
        return u'Stu:%s,%s'%(self.sname,self.spwd)
      

生成数据库表

        #创建当前应用的迁移文件
python manage.py makemigrations student

#生成数据库表
python manage.py migrate
      

配置URL

        from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^student/', include('student.urls')),
]
#coding=utf-8

from django.conf.urls import url
import views

urlpatterns = [
    url(r'^$',views.login_view),
    url(r'^login/',views.to_login_view)
]
      

配置函数视图

        #处理登录功能
def doLogin_view(request):
    #接收请求参数
    uname = request.POST.get('uname','')
    pwd = request.POST.get('pwd','')

    #判断是否登录成功
    count = Stu.objects.filter(sname=uname,spwd=pwd).count()
    

    if count==1:
        return HttpResponse('登录成功!')
    else:
        return HttpResponse('登录失败!')
      


11_案例7_影片展示

参考网站:80s.tw/movie/list/-----


v2-3c40829a650f96ab57be6975d78f8601_b.jpg


创建模型类(逆向生成)

        python manage.py inspectdb>movie/models.py
      

配置URL

        from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^movie/', include('movie.urls')),
]
#coding=utf-8


from django.conf.urls import url
import views

urlpatterns=[
    url(r'^$',views.index_view),

]
      

创建视图函数

        # -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render
from models import *
import math

def page(num=1,size=20):
    num = int(num)
    if num < 1:
        num = 1

    # 计算总页数
    total_records = Movie.objects.count()
    total_pages = int(math.ceil(total_records * 1.0 / size))


    if num > total_pages:
        num = total_pages

    movies = Movie.objects.all()[((num - 1) * size):(num*size)]


    return movies,num


# Create your views here.
def index_view(request):
    num = request.GET.get('num',1)

    ms,n = page(num)

    pre_page = n-1
    next_page = n+1


    return render(request,'movie.html',{'movies':ms,'pre_page':pre_page,'next_page':next_page})
      

创建模板

         <div id="header"  class="clearfix">
        <ul class="clearfix">
            <li>首页</li>
            <li>电影</li>
            <li>电视剧</li>
            <li>动漫</li>
            <li>综艺</li>
            <li>音乐</li>
            <li>MV</li>
            <li>视频</li>
            <li>短片</li>
            <li>公开课</li>
        </ul>
    </div>
    <div id="content"  >
        <ul class="clearfix">
           {% for movie in movies %}

               <li>
                   <a href="{{ movie.mlink }}"><img src="{{ movie.mimg }}"/></a>
                    <h1 class="h1">{{ movie.mname }}</h1>
                    <span class="tip">{{ movie.mdesc }}</span>
                </li>


           {% endfor %}

        
        </ul>
    </div>
    <div id="pagebar">
        <a href="/movie/?num={{ pre_page }}">上一页</a>
        <a href="/movie/?num={{ next_page }}">下一页</a>
    </div>

      

启动服务器

        python manage.py runserver 127.0.0.1:8000
      

浏览器访问

        http://127.0.0.1:8000/movie/
      

12_Django分页

创建视图函数

        from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage


def page_view(request):
    num = request.GET.get('num',1)
    num = int(num)
    

    movies = Movie.objects.all()
    paginator = Paginator(movies,20)

    try:
        t_per_page = paginator.page(num)#获取当前页码的记录
    except PageNotAnInteger:#如果用户输入的页码不是整数时,显示第1页的内容
        t_per_page = paginator.page(1)
    except EmptyPage:#如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容
        t_per_page = paginator.page(paginator.num_pages)
        
    
    
    #每页开始页码
    begin = (num-int(math.ceil(10.0/2)))
    if begin<1:
        begin = 1

    # 每页结束页码
    end = begin+9
    if end >pager.num_pages:
        end = pager.num_pages

    if end <=10:
        begin = 1
    else:
        begin = end -9

    pagelist = range(begin,end+1)

    return render(request,'movie2.html',{'paginator':paginator,'t_per_page':t_per_page,'pagelist':pagelist})
      

配置模板

        <div id="header"  class="clearfix">
        <ul class="clearfix">
            <li>首页</li>
            <li>电影</li>
            <li>电视剧</li>
            <li>动漫</li>
            <li>综艺</li>
            <li>音乐</li>
            <li>MV</li>
            <li>视频</li>
            <li>短片</li>
            <li>公开课</li>
        </ul>
    </div>
    <div id="content"  >
        <ul class="clearfix">
           {% for movie in t_per_page %}

               <li>
                   <a href="{{ movie.mlink }}"><img src="{{ movie.mimg }}"/></a>
                    <h1 class="h1">{{ movie.mname }}</h1>
                    <span class="tip">{{ movie.mdesc }}</span>
                </li>


           {% endfor %}



        
        </ul>
    </div>
    <div id="pagebar">
        {% if t_per_page.has_previous %}
            <a href="/movie/page/?num={{ t_per_page.previous_page_number }}">上一页</a>
        {% endif %}
        {% for n in paginator.page_range %}
            {% if n <= 10 %}
                <a href="/movie/page/?num={{ n }}">{{ n }}</a>
            {% endif %}


        {% endfor %}

        {% if t_per_page.has_next %}
            <a href="/movie/page/?num={{ t_per_page.next_page_number }}">下一页</a>
        {% endif %}
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值