• 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

  • 相关阅读:
    Linux中OCI开发库的配置
    makefile中的gcc -o $@ $^是什么意思?
    【转】gcc中的-w -W和-Wall选项
    【转】Linux查看系统是32位还是64位方法总结
    【转】gcc命令中参数c和o混合使用的详解
    Python2.7设置在shell脚本中自动补全功能的方法
    Python3设置在shell脚本中自动补全功能的方法
    Pyqt图标下载网站
    如何使QLineEdit禁止编辑
    python偏函数的运用
  • 原文地址:https://www.cnblogs.com/luhouxiang/p/7589459.html
Copyright © 2020-2023  润新知