Django--1--基本操作&一个实例

来源:互联网 发布:java自增id生成策略 编辑:程序博客网 时间:2024/06/04 19:39

最近学了很多关于数据,Machine learning,NLP的东西, 在学习的同时强烈意识到要是能有个地方能够实现我的种种想法就太好了。于是准备学习python的Django框架,目标开发一个自己的网站。


1.一些基本命令

django-admin.py startproject hello_django    #创建项目

django-admin.py startapp hello                     #创建app

两行代码完成创建,效果如下图

manage.py runserver      #manage.py是在项目目录下的一个脚本,是django-admin.py的简单包装,拥有其全部的功能  这行代码功能是启动服务器

manage.py makemigrations                        #生成数据库同步脚本

manage.py migrate                                     #同步数据库

namage.py createsuperuser                       #创建一个超级管理员

执行完上面操作然后runserver,之后访问http://localhost:8000/admin并且登录,你就能看到这个效果。这种设计还是挺暖的...

2.回顾下现在的目录结构:


3.创建一个简单的网页(查询用户列表)

step1:在settings.py里的INSTALLED_APPS增加app名

step2:在view.py里定义一个业务处理的函数

step3:定义一个模板并引入静态文件

step4:在url.py里定义url地址

step5:启动服务

step6:把用户数据查询出来并渲染到页面上

step1:

INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'hello',]

step2:

# -*- coding:utf-8 -*-from django.shortcuts import render# Create your views here.def hello(request):    # render实现渲染功能    # 第一个reques参数必须要有,不然无法接受请求    # 第二个参数是模板文件    return render(request, 'table.html')

step3:

默认方式:先在hello文件夹下创建一个static文件夹,一个template文件夹,然后将静态文件(js,css)放进static,模板文件(html)放入templates

step4:

from django.conf.urls import urlfrom django.contrib import adminfrom hello import views   # 从我的app中导入views.pyurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^hello/$', views.hello, name='hello'),    # name是别名    # views.hello指向了step2那段代码]
step5: 启动服务器看下效果


很明显js和css没有加载进去(想要这个文件的童鞋可以到这里下载)

这里我们需要对html源码进行一些改动:

{% load staticfiles %}<!DOCTYPE html><html><head>   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   <meta name="viewport" content="width=device-width, initial-scale=1.0" />   <title>Bootstrap 实例 - 条纹表格</title>   <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">   <script src="{% static 'js/jquery.min.js' %}"></script>   <script src="{% static 'js/bootstrap.min.js' %}"></script></head><body>.........之后省略.........
这样修改之后,效果如下:

搞定!

step6:虽然成功显示,但是目前显示出来的只是在html中静态的信息。接下来我们尝试从数据库中提取出用户信息并渲染到这个表格中,注意这里的数据库里面是django自带的数据,用户自然就是admin
ps:首先我们要知道在安装环境下的Lib里面的site-package中有个叫contrib的东西。这是一个框架集,里面有很多的app。我们现在需要其中auth模块中的models.py这个文件。其中注意这段代码:

class User(AbstractUser):    """    Users within the Django authentication system are represented by this    model.    Username, password and email are required. Other fields are optional.    """    class Meta(AbstractUser.Meta): # 这是存放用户信息的类        swappable = 'AUTH_USER_MODEL'
所以说我们在views.py里就这样写:

# -*- coding:utf-8 -*-from django.shortcuts import renderfrom django.contrib.auth.models import User# Create your views here.def hello(request):    # 查询所有用户的信息,放到User_list,之后以字典形式加入render()    user_list = User.objects.all()    # render实现渲染功能    # 第一个reques参数必须要有,不然无法接受请求    # 第二个参数是模板文件    return render(request, 'table.html', {'user_list': user_list})
然后还要修改下html代码:(以下为完整html代码)

{% load staticfiles %}<!DOCTYPE html><html><head>   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />   <meta name="viewport" content="width=device-width, initial-scale=1.0" />   <title>Django学习--用户列表</title>   <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet">   <script src="{% static 'js/jquery.min.js' %}"></script>   <script src="{% static 'js/bootstrap.min.js' %}"></script></head><body><table class="table table-striped">   <caption>用户列表</caption>   <thead>      <tr>         <th>用户名</th>         <th>密码</th>         <th>fristname</th>         <th>lastname</th>      </tr>   </thead>   <tbody>    {% for user in user_list %}      <tr>         <td>{{user.username}}</td>         <td>{{user.password}}</td>         <td>{{user.first_name}}</td>         <td>{{user.last_name}}</td>      </tr>{% endfor %}   </tbody></table></body></html>
最后效果如下:


to be continued...