zoukankan      html  css  js  c++  java
  • django环境准备学习笔记(三)

    环境准备
    创建Django工程
    			django-admin startproject 工程名
    创建 Django 超级用户:python manage.py createsuperuser
    1、注释 #'django.middleware.csrf.CsrfViewMiddleware',
    2、创建template模板文件夹和static静态文件夹
    3、设置静态路径:STATICFILES_DIRS = (
    			os.path.join(BASE_DIR, 'static'),
    		)
    4、创建app cd 工程名 python manage.py startapp APP01
    5、将APP01注册到setting里
    6、在app的models里面创建数据库
    	第一张表:
    	class Host(models.Model):
        nid = models.AutoField(primary_key=True)   #主键一般自动生成,也可以自己设定,但是需要声明primary_key
        hostname = models.CharField(max_length=32,db_index=True)    #db_index添加索引
        ip = models.GenericIPAddressField(protocol="ipv4",db_index=True) #db_index添加索引设置字段为ip模式
        port = models.IntegerField()
        b = models.ForeignKey(to="Business", to_field='id')  添加外键,关联到Business的id
    	
    	第二张表:
    	class Business(models.Model):
        # id 自动创建
        caption = models.CharField(max_length=32)
        code = models.CharField(max_length=32,null=True,default="SA")
        # fk = models.ForeignKey('Foo')
    	
    7、执行命令,创建表
    	python manage.py makemigrations
    	python manage.py migrate
    	创建表之后可能会修改表结构或者改表名字等,先在models里面做完修改执行命令之后会有选项,
    	让你为新加的列设置默认值,也可以在models里面修改的时候这样写
    	code = models.CharField(max_length=32,null=True,default="SA")
    7.1查看表:使用Navicat Premium查看表是否建立
       在admin里面创建注册表,也可以使用admin后台页面对数据库增删改查
       # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
    
        from django.contrib import admin
    
        from app01.models import UserInfo
        from app01.models import Zte
        # Register your models here.
    
        class UserInfoAdmin(admin.ModelAdmin):
            pass
    
        class zte(admin.ModelAdmin):
            pass
    
        admin.site.register(UserInfo,UserInfoAdmin)
        admin.site.register(Zte,zte)
    8、在url里面加入:
    	from app01 import views
    
        urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^business$', views.business),   这里一般加一个终止符,不加的话下面那一行永远不会执行
        #url(r'^businessadd', admin.site.urls),
        ]
    9、在app01的views里面加入business函数
    	from django.shortcuts import render
        from django.shortcuts import redirect
        from app01 import models
        # Create your views here.
        def business(request):
    		#从数据库获取但表单的三种方式
            v=models.Business.objects.all()
            #QuerySet  上面语句会得到一个QuerySet列表,列表里面是三个对象。对象有下面这些属性
            # [obj(id,caption,code),obj(id,caption,code),obj(id,caption,code) ]
    		另一种方法
    		v2 = models.Business.objects.all().values('id','caption')#根据value获得了两列值
            # QuerySet
            # [{'id':1,'caption': '运维部'},{'id':1,'caption': '开发'},...]
    		v3 = models.Business.objects.all().values_list('id','caption')
            # QuerySet
            # [(1,运维部),(2,开发)]
            return render(request,'business.html',{'v':v})
    		
    	9.1使用host调用外键字段的方法
    		def host(request):
    			v1 = models.Host.objects.all()
    			v2 = models.Host.objects.filter(nid__gt=0)
    			print v1,'-----',v2,'----'
    			for row in v2:
    				print (row.nid,row.hostname,row.ip,row.port,row.b_id,row.b.caption,row.b.id)
    			# return HttpResponse('112312')
    			# v1 = models.Business.objects.filter(host__nid__gt=0)#也可以使用大于0的方式来获取
    			return render(request, 'host.html', {'v1': v1})
    		
    10、在模块路径下增加business.html文件
    	<!DOCTYPE html>
    	<html lang="en">
    	<head>
    		<meta charset="UTF-8">
    		<title>Title</title>
    	</head>
    	<body>
    		<h1>业务线列表(对象形式的)</h1>
    		<ul>
    			{% for row in v1 %}
    				<li>{{ row.id}}-{{ row.caption}}-{{ row.code }}</li>
    			{% endfor %}
    		</ul>
    		<h1>业务线列表(字典形式的)</h1>
    		<ul>
    			{% for row in v2 %}
    				<li>{{ row.id}}-{{ row.caption}}-</li>
    			{% endfor %}
    		</ul>
    		<h1>业务线列表(元组形式的)</h1>
    		<ul>
    			{% for row in v3 %}
    				<li>{{ row.0}}-{{ row.1}}-</li>
    			{% endfor %}
    		</ul>
    	</body>
    	</html>
    	host文件
    	
    	<!DOCTYPE html>
    	<html lang="en">
    	<head>
    		<meta charset="UTF-8">
    		<title>Title</title>
    	</head>
    	<body>
    		<table border="1">
    			<thead>
    				<tr>
    					<th>主机名</th>
    					<th>iP</th>
    					<th>端口</th>
    					<th>业务线名称</th>
    				</tr>
    			</thead>
    			<tbody>
    				{% for row in v1 %}
    				<tr hid="{{ row.nid }}" bid="{{ row.b_id }}"/>
    					<td>{{ row.hostname }}</td>
    					<td>{{ row.ip }}</td>
    					<td>{{ row.port }}</td>
    					<td>{{ row.b.caption }}</td>
    				{% endfor %}
    			</tbody>
    		</table>
    	
    	</body>
    	</html>
    	
    

      

  • 相关阅读:
    20171104 DOI Excel 导出
    ABAP 字符串处理
    SE80 开发对象
    ABAP开发中message dump
    物料单位转换的两个函数
    ABAP 多行消息分别显示弹窗
    隐藏你写的程序代码
    学习笔记:Javascript 变量 包装对象
    访问平安银行网站时出现证书问题 NET::ERR_CERT_SYMANTEC_LEGACY
    关于跨域问题
  • 原文地址:https://www.cnblogs.com/qiangayz/p/8787530.html
Copyright © 2011-2022 走看看