zoukankan      html  css  js  c++  java
  • django学习1

    参考资料:http://www.cnblogs.com/feixuelove1009/p/5910384.html#top

    本学习只在记录过程,需要更全面的资料,可直接上参考资料细看。

    django版本为1.10.8

    python版本为3.5.3

    1、安装django

    1)先清理老版本

    如果之前安装过django版本,为了简单起见,直接删除先

    我之前安装的目录在:C:Program FilesAnaconda3envspython3.5.3Libsite-packages

    image

    全删了

    然后在命令行中输入命令:python -m django --version

    image

    2)安装新版本

    命令行中输入:pip install django==1.10.i8

    image

    安装完成后,输入命令确认版本:python -m django –version

    image

    2、生成简单的工程:

    进入你指定的某个目录,运行下面的命令:django-admin startproject mysite

    image

    进入mysite目录,输入下面的命令:python manage.py runserver

    image

    至此,一个简单的web服务器就写好了,打开浏览器,输入localhost:8000

    image

    3、创建简单的投票程序

    1)创建app

    在命令行中输入命令:python manage.py startapp polls

    image

    运行完成后看到mysite目录下已经生成了polls目录和相应文件:

    image

    2) 编写视图

    在polls/views.py文件中,输入下列代码:

    from django.http import HttpResponse
    
    
    
    def index(request):
    
        return HttpResponse("Hello, world. You're at the polls index.")

    为了调用该视图,我们还需要编写urlconf。现在,在polls目录中新建一个文件,名字为urls.py,在其中输入代码如下:

    from django.conf.urls import url
    
    from . import views
    
    
    
    urlpatterns = [
    
        url(r'^$', views.index, name='index'),
    
    ]

    下一步是让项目的主urls文件指向我们建立的polls这个app独有的urls文件,你需要先导入include模块,打开mysite/urls.py文件,代码如下:

    from django.conf.urls import include, url
    
    from django.contrib import admin
    
    
    
    urlpatterns = [
    
        url(r'^polls/', include('polls.urls')),
    
        url(r'^admin/', admin.site.urls),
    
    ]
    然后输入命令,python manage.py runserver
    打开浏览器,输入:http://localhost:8000/polls/
    运于结果如下:
    image
     

     

    4、数据库安装

    1)创建模型

    polls/models.py

    from django.db import models
    
    
    
    class Question(models.Model):
    
        question_text = models.CharField(max_length=200)
    
        pub_date = models.DateTimeField('date published')
    
    
    
    class Choice(models.Model):
    
        question = models.ForeignKey(Question, on_delete=models.CASCADE)
    
        choice_text = models.CharField(max_length=200)
    
        votes = models.IntegerField(default=0)

    2) 激活模型

    mysite/settings.py中

    INSTALLED_APPS = [
    
    'polls.apps.PollsConfig',
    
    'django.contrib.admin',
    
    'django.contrib.auth',
    
    'django.contrib.contenttypes',
    
    'django.contrib.sessions',
    
    'django.contrib.messages',
    
    'django.contrib.staticfiles',
    
    ]

    命令行中运行命令:python manage.py makemigrations polls

    image

    再运行命令:python manage.py sqlmigrate polls 0001

    image

    在运行最后的命令前:python manage.py migrate,我们稍微停留一下,考虑是接到哪一个数据库上。

    当前接入的数据库为mysql,因此需要提前做一些准备。

    在本地创建一个mysite数据库:(假译用户名:root,密码:root)

    mysql -uroot -proot

    create database test2 charset=utf8;

    image

    然后修改mysite/settings.py

    DATABASES = {
    
        'default': {
    
            'ENGINE': 'django.db.backends.mysql',
    
            'NAME': 'mysite', #数据库名字,
    
            'USER': 'root', #数据库登录用户名
    
            'PASSWORD': 'root', #数据库登录密码,我自己修改了
    
            'HOST': 'localhost', #数据库所在主机(公司中写真实主机地址)
    
            'PORT': '3306', #数据库端口
    
        }
    
    }

    需要说明的是,需要先安装mysql相应的库:

    pip install mysqlclient

    pip install pymysql

    这样可确保无错误

    执行:python manage.py migrate

    数据库的通道打通: image

    5、使用API

    在当前目录下使用命令:python manage.py shell

    image

    然后可以用以下命令尝试:

    >>> import django 
    
    
    >>> django.setup()
    
    
    >>> from polls.models import Question, Choice # 导入我们写的模型类
        # 现在系统内还没有questions
        >>> Question.objects.all()
        <QuerySet []>
        
        # 创建一个新的question
        # Django推荐使用timezone.now()代替python内置的datetime.datetime.now()
        from django.utils import timezone
        >>> q = Question(question_text="What's new?", pub_date=timezone.now())
        
        # 你必须显式的调用save()方法,才能将对象保存到数据库内
        >>> q.save()
        
        # 默认情况,你会自动获得一个自增的名为id的主键
        >>> q.id
        1
        
        # 通过python的属性调用方式,访问模型字段的值
        >>> q.question_text
        "What's new?"
        >>> q.pub_date
        datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)
        
        # 通过修改属性来修改字段的值,然后显式的调用save方法进行保存。
        >>> q.question_text = "What's up?"
        >>> q.save()
        
        # objects.all() 用于查询数据库内的所有questions
        >>> Question.objects.all()
        <QuerySet [<Question: Question object>]>

    前面显示的有不可读的内容,加__str__函数

    polls/models.py

    from django.db import models
    from django.utils.encoding import python_2_unicode_compatible
    
    
    @python_2_unicode_compatible # 当你想支持python2版本的时候才需要这个装饰器
    class Question(models.Model):
        # ...
        def __str__(self):   # 在python2版本中使用的是__unique__
            return self.question_text
            
    @python_2_unicode_compatible 
    class Choice(models.Model):
        # ...
        def __str__(self):
            return self.choice_text

    6、创建管理员

    image

    需要创建的密码具有一定复杂性,否则会要求重新输入

    启动开发服务器,在浏览器访问http://127.0.0.1:8000/admin/

    image

    点击进去是系统自带的界面:

    image

    注册投票应用:

    打开polls/admin.py文件,加入下面的内容:

    from django.contrib import admin
    from .models import Question
    
    
    admin.site.register(Question)

    再次启动开发服务器,然后访问浏览器:http://127.0.0.1:8000/admin/

    image

  • 相关阅读:
    some tips
    ORA00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together
    Chapter 01Overview of Oracle 9i Database Perfomrmance Tuning
    Chapter 02Diagnostic and Tuning Tools
    变量与常用符号
    Chapter 18Tuning the Operating System
    标准输入输出
    Trace files
    DBADeveloped Tools
    Chapter 03Database Configuration and IO Issues
  • 原文地址:https://www.cnblogs.com/luhouxiang/p/7589459.html
Copyright © 2011-2022 走看看