精华内容
下载资源
问答
  • 开发系统和开发IDE 开发系统: Ubuntu 16.0.4 LTS 开发IDE: Visual Studio Code 版本: ...资料《Python编程从入门到实践》书籍 链接:https://pan.baidu.com/s/1USkqvL2dLU3Q9XplVaGQJg 提取码:zoyc GitHub: htt...

    开发系统和开发IDE

    开发系统: Ubuntu 16.0.4 LTS
    开发IDE: Visual Studio Code 版本: 1.32.3
    Python版本: Python3
    依赖: Django 2.2

    资料《Python编程从入门到实践》书籍

    链接:https://pan.baidu.com/s/1USkqvL2dLU3Q9XplVaGQJg
    提取码:zoyc

    GitHub:

    https://github.com/lichangke/Python3_Project/tree/master/learning_log

    1. Django入门

    Django(http://djangoproject.com/ )

    Django是一个Web框架 ——一套用于帮助开发交互式网站的工具。

    学习如何使用Django来开发一个名为“学习笔记”(Learning Log) 的项目, 这是一个在线日志系统, 让你能够记录所学习的有关特定主题的知识。

    1.1 建立项目

    阶段代码:GitHub learning_log_1.1_建立项目

    不包括虚拟环境ll_env文件夹下文件

    1.1.1 建立虚拟环境

    虚拟环境 是系统的一个位置, 你可以在其中安装包, 并将其与其他Python包隔离,将项目的库与其他项目分离是有益的。

    为项目新建一个目录, 将其命名为learning_log,使用如下命令来创建虚拟环境:

    python -m venv ll_env

    运行了模块venv , 并使用它来创建一个名为ll_env的虚拟环境,成功创建如下图

    1.1.1 venv .png

    1.1.2 激活虚拟环境

    建立虚拟环境后, 需要使用下面的命令激活它:

    source ll_env/bin/activate

    成功激活如下图:
    1.1.2 activate.png

    1.1.3 安装Django

    在虚拟环境处于活动状态时安装Django(以下无特殊说明,均在虚拟环境处于活动状态)

    pip install Django

    1.1.4 在Django中创建项目

    django-admin.py startproject learning_log .

    1.1.4 startproject.png

    注意:千万别忘了这个句点(英文输入法), 否则部署应用程序时将遭遇一些配置问题。 如果忘记了这个句点, 就将创建的文件和文件夹删除(ll_env除外) , 再重新运行这个命令。

    # 文件名 说明
    settings.py 指定Django如何与你的系统交互以及如何管理项目,修改其中一些设置, 并添加一些设置
    urls.py 告诉Django应创建哪些网页来响应浏览器请求
    wsgi.py 帮助Django提供它创建的文件, 这个文件名是web server gateway interface(Web服务器网关接口 ) 的首字母缩写。

    1.1.5 创建数据库

    python manage.py migrate

    1.1.5 migrate.png

    1.1.6 查看项目

    核实Django是否正确地创建了项目。 为此, 可执行命令runserver

    python manage.py runserver

    1.1.6 runserver.png

    打开一款Web浏览器, 并输入URL: http://localhost:8000/; 如果这不管用, 请输入http://127.0.0.1:8000/。

    1.1.6 Web.png

    如果出现错误消息“That port is already in use”(指定端口已被占用) , 请执行命令python manage.py runserver 8001 , 让Diango使用另一个端口; 如果这个端口也不可用, 请不断执行上述命令, 并逐渐增大其中的端口号, 直到找到可用的端口。

    1.2 创建应用程序

    阶段代码:GitHub learning_log_1.2_创建应用程序

    不包括虚拟环境ll_env文件夹下文件

    Django项目 由一系列应用程序组成, 它们协同工作, 让项目成为一个整体。

    当前, 在前面打开的终端窗口中应该还运行着runserver 。 请再打开一个终端窗口(或标签页) , 并切换到manage.py所在的目录。 激活该虚拟环境, 再执行命令startapp :

    python manage.py startapp learning_logs

    1.2 startapp .png

    命令startapp appname 让Django建立创建应用程序所需的基础设施。 新增了一个文件夹learning_logs,其中最重要的文件是models.py、 admin.py和views.py。使用models.py来定义要在应用程序中管理的数据

    1.2.1 定义模型

    想想涉及的数据。 每位用户都需要在学习笔记中创建很多主题。 用户输入的每个条目都与特定主题相关联, 这些条目将以文本的方式显示。 还需要存储每个条目的时间戳, 以便能够告诉用户各个条目都是什么时候创建的

    models.py
    初始

    from django.db import models
    
    # Create your models here.
    

    模型告诉Django如何处理应用程序中存储的数据。 在代码层面, 模型就是一个类, 包含属性和方法。

    models.py

    from django.db import models
    
    # Create your models here.
    # 创建了一个名为Topic 的类, 它继承了Model ——Django中一个定义了模型基本功能的类。 Topic 类只有两个属性: text 和date_added 。我们需要的属性
    class Topic(models.Model):
        ''' 用户学习的主题'''
        # https://docs.djangoproject.com/en/2.2/ref/models/fields/#charfield
        text = models.CharField(max_length = 200) # 属性text是一个CharField——由字符或文本组成的数据
        # https://docs.djangoproject.com/en/2.2/ref/models/fields/#datetimefield
        date_added = models.DateTimeField(auto_now_add=True) # 实参auto_add_now=True 让Django将这个属性自动设置成当前日期和时间。
        def __str__(self):
            """返回模型的字符串表示"""
            return self.text
    

    1.2.2 激活模型

    要使用模型, 必须让Django将应用程序包含到项目中。 为此, 打开settings.py(它位于目录learning_log/learning_log中) , 你将看到一个这样的片段, 即告诉Django哪些应用程序安装在项目中:

    settings.py
    初始

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

    注Django版本差异,书中显示是一个元组。将 INSTALLED_APPS 修改如下
    settings.py

    --snip--
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    
        # 我的应用程序
        'learning_logs',
    ]
    --snip--
    

    接下来, 需要让Django修改数据库, 使其能够存储与模型Topic 相关的信息。

    python manage.py makemigrations learning_logs

    1.2.2 makemigrations .png

    命令makemigrations 让Django确定该如何修改数据库, 使其能够存储与定义的新模型相关联的数据。 输出表明Django创建了一个名为0001_initial.py的迁移文件, 这个文件将在数据库中为模型Topic 创建一个表。
    下面来应用这种迁移, 让Django替我们修改数据库:

    python manage.py migrate

    1.2.2 migrate.png

    每当需要修改“学习笔记”管理的数据时, 都采取如下三个步骤: 修改models.py; 对learning_logs 调用makemigrations ; migrate让Django迁移项目。

    可以查看db.sqlite3如下图,models.py中Topic 的类数据

    1.2.2 sqlite3.png

    1.2.3 Django管理网站

    1. 创建超级用户

    为应用程序定义模型时, Django提供的管理网站(admin site) 让你能够轻松地处理模型。

    Django允许你创建具备所有权限的用户——超级用户。 权限决定了用户可执行的操作。

    为在Django中创建超级用户, 请执行下面的命令并按提示做:

    python manage.py createsuperuser

    1.2.3 createsuperuser.png

    2. 向管理网站注册模型

    Django自动在管理网站中添加了一些模型, 如User 和Group , 但对于创建的模型, 必须手工进行注册。

    创建应用程序learning_logs 时, Django在models.py所在的目录中创建了一个名为admin.py的文件:

    admin.py
    初始

    from django.contrib import admin
    # Register your models here.
    

    为向管理网站注册Topic , 请输入下面的代码:

    admin.py

    from django.contrib import admin
    
    # Register your models here.
    
    from learning_logs.models import Topic  # 导入我们要注册的模型Topic 
    
    admin.site.register(Topic)  # 让Django通过管理网站管理我们的模型
    

    使用超级用户账户访问管理网站: 访问http://localhost:8000/admin/ , 并输入刚创建的超级用户的用户名和密码

    1.2.3 admin.png

    确认在终端窗口中运行着Django服务器,如果没有, 请激活虚拟环境, 并执行命令python manage.py runserver 。

    可以在Topics中add新的Topic,创建 Chess 和 Rock Climbing

    1.2.4 定义模型Entry

    要记录学到的国际象棋和攀岩知识, 需要为用户可在学习笔记中添加的条目定义模型。 每个条目都与特定主题相关联, 这种关系被称为多对一关系, 即多个条目可关联到同一个主题。

    在models.py添加Entry类代码:

    models.py

    from django.db import models
    class Topic(models.Model):
      --snip--
    class Entry(models.Model):
        """学到的有关某个主题的具体知识"""
        # 外键是一个数据库术语, 它引用了数据库中的另一条记录; 这些代码将每个条目关联到特定的主题。 每个主题创建时, 都给它分配了一个键(或ID) 。 
        # https://docs.djangoproject.com/en/2.2/ref/models/fields/#foreignkey
        # 注 在django2.0后定义外键和一对一关系的时候需要加on_delete选项
        topic = models.ForeignKey(Topic,on_delete=models.CASCADE)
        '''
        书中源代码:
            topic = models.ForeignKey(Topic)
        '''
        text = models.TextField()
        date_added = models.DateTimeField(auto_now_add=True)
        # 在Entry 类中嵌套了Meta 类。 Meta 存储用于管理模型的额外信息, 在这里, 它让我们能够设置一个特殊属性, 让Django在需要时使用Entries 来表示多个条目。 
        class Meta:
            verbose_name_plural = 'entries'
    
        def __str__(self):
            """返回模型的字符串表示"""
            return self.text[:50] + "..."    # 由于条目包含的文本可能很长, 我们让Django只显示text 的前50个字符
    

    1.2.5 迁移模型Entry

    python manage.py makemigrations learning_logs

    python manage.py migrate

    生成了一个新的迁移文件——0002_entry.py, 它告诉Django如何修改数据库, 使其能够存储与模型Entry 相关的信息。

    1.2.6 向管理网站注册Entry

    修改 admin.py
    admin.py

    from django.contrib import admin
    
    # Register your models here.
    
    from learning_logs.models import Topic,Entry  # 导入我们要注册的模型Topic,Entry
    
    admin.site.register(Topic)  # 让Django通过管理网站管理我们的模型
    admin.site.register(Entry)
    

    返回到http://localhost/admin/ , 你将看到learning_logs下列出了Entries。

    1.2.6 Entry.png

    可以向对应的Topic中添加条目

    1.2.7 Django shell

    输入一些数据后, 就可通过交互式终端会话以编程方式查看这些数据了。 这种交互式环境称为Django shell

    python manage.py shell

    1.2.7 shell.png

    1.3 创建网页: 学习笔记主页

    阶段代码:GitHub learning_log_1.3_ 创建网页: 学习笔记主页

    不包括虚拟环境ll_env文件夹下文件

    使用Django创建网页的过程通常分三个阶段: 定义URL、 编写视图和编写模板。 urls -> views -> html 添加网页步骤。

    定义URL:让Django知道如何将浏览器请求与网站URL匹配, 以确定返回哪个网页。

    编写视图:每个URL都被映射到特定的视图 ——视图函数获取并处理网页所需的数据。

    编写模板:生成浏览器能够理解的网页。

    1.3.1 映射URL

    打开项目主文件夹learning_log中的文件urls.py, 修改为
    learning_log/urls.py

    from django.contrib import admin
    from django.urls import path
    
    urlpatterns = [
        path('admin/', admin.site.urls),# 该模块定义了可在管理网站中请求的所有URL
        path('', include('learning_logs.urls', namespace='learning_logs')), 
        # 代码包含实参namespace , 让我们能够将learning_logs 的URL同项目中的其他URL区分开来
    ]
    '''
    Django版本更新,书上的代码需做相应修改
    
    书中源代码:
    from django.conf.urls import include, url
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'', include('learning_logs.urls', namespace='learning_logs')),
    ]
    应改为:
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('learning_logs.urls', namespace='learning_logs')),
    ]
    
    '''
    

    默认的urls.py包含在文件夹learning_log中, 现在需要在文件夹learning_logs中创建另一个urls.py文件:(注意关于 Django版本更新,书上的代码需做相应修改)
    learning_logs/urls.py

    """定义learning_logs的URL模式"""
    from django.urls import path,re_path
    from . import views
    
    app_name='learning_logs' # 不能少 ,否则runserver的时候就会出错
    
    # https://docs.djangoproject.com/en/2.2/ref/urls/#module-django.urls.conf
    urlpatterns = [
        # 主页
        path('', views.index, name='index'),# Django将在文件views.py中查找函数index()
    ]
    
    # urls -> views -> html  添加网页步骤
    
    '''
    Django版本更新,书上的代码需做相应修改
    
    书中源代码:
    from django.conf.urls import url
    from . import views
    urlpatterns = [
         # Home page.
        url(r'^$', views.index, name='index'),
    
        # Show all topics.
        url(r'^topics/$', views.topics, name='topics'),
    
        # Detail page for a single topic.
        url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),
    ]
    
    应改为:
    from django.urls import path
    from . import views
    
    app_name='learning_logs'
    urlpatterns = [
        # 主页
        path('', views.index, name='index'),
    
        # 显示所有的主题
        path('topics/', views.topics, name='topics'),
    
        # 特定主题的详细页面
        path("topics/(?P<topic_id>\d+)/", views.topic, name='topic'),
    ]
    
    '''
    

    1.3.2 编写视图

    视图函数接受请求中的信息, 准备好生成网页所需的数据, 再将这些数据发送给浏览器——这通常是使用定义了网页是什么样的模板实现的。
    learning_logs中的文件views.py是执行命令python manage.py startapp 时自动生成的, 当前其内容如下:
    views.py
    初始

    from django.shortcuts import render
    
    # Create your views here.
    

    这个文件只导入了函数render() , 它根据视图提供的数据渲染响应。 下面的代码演示了该如何为主页编写视图:
    views.py

    from django.shortcuts import render
    
    # Create your views here.
    
    def index(request):
        """学习笔记的主页"""
        return render(request, 'learning_logs/index.html')  # 这里向函数render() 提供了两个实参: 原始请求对象以及一个可用于创建网页的模板。
    

    1.3.3 编写模板

    模板定义了网页的结构。 模板指定了网页是什么样的, 而每当网页被请求时, Django将填入相关的数据。 模板让你能够访问视图提供的任何数据。 主页视图没有提供任何数据, 因此相应的模板非常简单。

    在文件夹learning_logs中新建一个文件夹, 并将其命名为templates。 在文件夹templates中, 再新建一个文件夹, 并将其命名为learning_logs。 这好像有点多余(在文件夹learning_logs中创建了文件夹templates, 又在这个文件夹中创建了文件夹learning_logs) , 但建立了Django能够明确解读的结构, 即便项目很大, 包含很多应用程序亦如此。 在最里面的文件夹learning_logs中, 新建一个文件, 并将其命名为index.html, 再在这个文件中编写如下代码:
    index.html

    <p>Learning Log</p>
    <p>Learning Log helps you keep track of your learning, for any topic you're learning about.</p>
    

    HTML教程:可参考runoob HTML 教程- (HTML5 标准)

    请求这个项目的基础URL——http://localhost:8000/, 将看到刚才创建的网页, 而不是默认的Django网页。

    1.3.3 Web.png

    1.4 创建其他网页

    阶段代码:GitHub learning_log_1.4_创建其他网页

    不包括虚拟环境ll_env文件夹下文件

    将创建两个显示数据的网页, 其中一个列出所有的主题, 另一个显示特定主题的所有条目。 对于每个网页, 都将指定URL模式, 编写一个视图函数, 并编写一个模板。 但这样做之前, 先创建一个父模板, 项目中的其他模板都将继承它。

    使用Django创建网页的过程通常分三个阶段: 定义URL、 编写视图和编写模板。 urls -> views -> html 添加网页步骤。

    1.4.1 模板继承

    创建网站时, 几乎都有一些所有网页都将包含的元素。 在这种情况下, 可编写一个包含通用元素的父模板, 并让每个网页都继承这个模板, 而不必在每个网页中重复定义这些通用元素。

    1. 父模板
    首先来创建一个名为base.html的模板, 并将其存储在index.html所在的目录中。 这个文件包含所有页面都有的元素; 其他的模板都继承base.html。 当前, 所有页面都包含的元素只有顶端的标题。 将在每个页面中包含这个模板, 因此将这个标题设置为到主页的链接:

    learning_logs/base.html

    <p>
        <a href="{% url 'learning_logs:index' %}">Learning Log</a>
    </p>
    {% block content %}{% endblock content %} 
    

    注意: {% 之间没有空格

    Django 模板可阅读 runoob Django 模板

    或者 Django 官网文档 The Django template language

    2. 子模板
    重新编写index.html, 使其继承base.html, 如下所示:

    learning_logs/index.html

    {% extends "learning_logs/base.html" %}
    
    {% block content %}
    <p>Learning Log helps you keep track of your learning, for any topic you're learning about.</p>
    {% endblock content %}
    

    1.4.2 显示所有主题的页面

    urls -> views -> html 添加网页步骤

    1. URL模式
    定义显示所有主题的页面的URL。 通常, 使用一个简单的URL片段来指出网页显示的信息; 将使用单词topics, 因此URL http://localhost:8000/topics/将返回显示所有主题的页面。修改learning_logs/urls.py如下
    urls.py

    """定义learning_logs的URL模式"""
    from django.urls import path,re_path
    from . import views
    app_name='learning_logs' # 不能少 ,否则runserver的时候就会出错
    # https://docs.djangoproject.com/en/2.2/ref/urls/#module-django.urls.conf
    urlpatterns = [
        # 主页
        path('', views.index, name='index'),    # Django将在文件views.py中查找函数index()
        # 显示所有的主题
        path('topics/',views.topics,name = 'topics')
    ]
    

    2. 视图
    函数topics() 需要从数据库中获取一些数据, 并将其发送给模板。 需要在views.py中添加的代码如下:

    views.py

    from django.shortcuts import render
    
    from .models import Topic   # 导入了与所需数据相关联的模型
    
    # Create your views here.
    
    def index(request):
        """学习笔记的主页"""
        return render(request, 'learning_logs/index.html')  # 这里向函数render() 提供了两个实参: 原始请求对象以及一个可用于创建网页的模板。
    
    def topics(request):
        """显示所有的主题"""
        topics = Topic.objects.order_by('date_added') # 查询数据库——请求提供Topic 对象, 并按属性date_added 对它们进行排序
        context = {'topics': topics} # 一个将要发送给模板的上下文。 上下文是一个字典, 其中的键是我们将在模板中用来访问数据的名称, 而值是我们要发送给模板的数据。 
        return render(request, 'learning_logs/topics.html', context)
    

    3. 模板
    显示所有主题的页面的模板接受字典context , 以便能够使用topics() 提供的数据。 创建一个文件, 将其命名为topics.html, 并存储到index.html所在的目录中。

    topics.html

    {% extends "learning_logs/base.html" %}
    {% block content %}
    <p>Topics</p>
    <ul>
        {% for topic in topics %}
        <li>{{ topic }}</li>
        {% empty %}
        <li>No topics have been added yet.</li>
        {% endfor %}
    </ul>
    {% endblock content %}
    

    现在需要修改父模板, 使其包含到显示所有主题的页面的链接:

    base.html

    <p>
        <a href="{% url 'learning_logs:index' %}">Learning Log</a> - 
        <a href="{% url 'learning_logs:topics' %}">Topics</a>
    </p>
    
    {% block content %}{% endblock content %}
    

    刷新浏览器中的主页, 将看到链接Topics。 单击这个链接, 将看到如下图
    1.4.2 topics.png

    1.4.3 显示特定主题的页面

    创建一个专注于特定主题的页面——显示该主题的名称及该主题的所有条目

    urls -> views -> html 添加网页步骤

    1. URL模式

    显示特定主题的页面的URL模式与前面的所有URL模式都稍有不同, 因为它将使用主题的id 属性来指出请求的是哪个主题。 例如, 如果用户要查看主题Chess(其id 为1) 的详细页面, URL将为http://localhost:8000/topics/1/。 下面是与这个URL匹配的模式, 它包含在learning_logs/urls.py中:

    urls.py

    """定义learning_logs的URL模式"""
    from django.urls import path,re_path
    from . import views
    
    app_name='learning_logs' # 不能少 ,否则runserver的时候就会出错
    
    # https://docs.djangoproject.com/en/2.2/ref/urls/#module-django.urls.conf
    urlpatterns = [
        # 主页
        path('', views.index, name='index'),    # Django将在文件views.py中查找函数index()
    
        # 显示所有的主题
        path('topics/',views.topics,name = 'topics')
    
        # 特定主题的详细页面
        # use a regular expression, you can use re_path(). https://stackoverflow.com/questions/47661536/django-2-0-path-error-2-0-w001-has-a-route-that-contains-p-begins-wit
        re_path(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'), # ?P<topic_id> 将匹配的值存储到topic_id 中; 而表达式\d+ 与包含在两个斜杆内的任何数字都匹配, 不管这个数字为多少位。
    ]
    

    2. 视图

    views.py

    --snip--
    def topic(request, topic_id):
        """显示单个主题及其所有的条目"""
        topic = Topic.objects.get(id=topic_id)
        entries = topic.entry_set.order_by('-date_added')
        context = {'topic': topic, 'entries': entries}
        return render(request, 'learning_logs/topic.html', context)
    

    3. 模板
    这个模板需要显示主题的名称和条目的内容; 如果当前主题不包含任何条目, 还需向用户指出这一点:

    topic.html

    {% extends 'learning_logs/base.html' %}
    {% block content %}
    <p>Topic: {{ topic }}</p>
    <p>Entries:</p>
    <ul>
        {% for entry in entries %}
        <li>
            <p>{{ entry.date_added|date:'M d, Y H:i' }}</p>
            <p>{{ entry.text|linebreaks }}</p>
        </li>
        {% empty %}
        <li>
            There are no entries for this topic yet.
        </li>
        {% endfor %}
    </ul>
    {% endblock content %}
    

    4. 将显示所有主题的页面中的每个主题都设置为链接
    在浏览器中查看显示特定主题的页面前, 需要修改模板topics.html, 让每个主题都链接到相应的网页

    topics.html

    {% extends "learning_logs/base.html" %}
    {% block content %}
    <p>Topics</p>
    <ul>
        {% for topic in topics %}
        <li>
            <a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a>
        </li>
        {% empty %}
        <li>No topics have been added yet.</li>
        {% endfor %}
    </ul>
    {% endblock content %}
    

    用模板标签url 根据learning_logs中名为topic 的URL模式来生成合适的链接。 这个URL模式要求提供实参topic_id

    刷新显示所有主题的页面, 再单击其中的一个主题

    1.4.3 entries.png


    GitHub链接:
    https://github.com/lichangke/LeetCode
    知乎个人首页:
    https://www.zhihu.com/people/lichangke/
    简书个人首页:
    https://www.jianshu.com/u/3e95c7555dc7
    CSDN首页:
    https://me.csdn.net/leacock1991
    欢迎大家来一起交流学习

    展开全文
  • Python编程从入门到实践Django(1) 1,Django介绍 Django是一个Web框架———一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能更轻松的读写数据库,管理用户。 2, 建立虚拟环境 新建一个目录...

    Python编程从入门到实践之Django(1)

    1,Django介绍

    • Django是一个Web框架———一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能更轻松的读写数据库,管理用户。

    2, 建立虚拟环境

    1. 新建一个目录作为项目目录,将其命名为learning_log
    2. 在终端切换至该目录下,如下图所示
    3. 输入如下命令创建虚拟环境
    D:\code\PythonCode\Python编程从入门到实践\learning_log> python -m venv ll_env
    

    3, 激活虚拟环境

    • 使用如下代码来激活虚拟环境
    D:\code\PythonCode\Python编程从入门到实践\learning_log> ll_env\Scripts\activate
    

    4, 中止虚拟环境

    • 使用如下命令命令停止虚拟环境
    (ll_env)D:\code\PythonCode\Python编程从入门到实践\learning_log> deactivate
    
    • 若关闭运行虚拟环境的终端,虚拟环境将不再处于活动状态

    5, 安装Django

    • 创建并激活虚拟环境后就可以安装Django
    (ll_env)D:\code\PythonCode\Python编程从入门到实践\learning_log> pip install Django
    
    • Django仅在虚拟环境处于活动状态时才可用

    6, 在Django中创建项目

    • 在处于活动的虚拟环境下,执行如下命令新建一个项目
    (ll_env)D:\code\PythonCode\Python编程从入门到实践\learning_log> django-admin startproject learning_log .
    
    • 命令末尾的句点让新项目使用合适的目录结构,千万不能忘记,否则部署应用程序时将遭遇一些配置问题
    • 运行完命令后会发现目录learning_log包含4个文件:__ init __.py,settings.pyurls.pywsgi.py
      1. init.py
      2. settings.py:指定Django如何与你的系统交互以及如何管理项目,后续将进行修改和添加配置。
      3. urls.py:告诉Django应创建哪些网页来响应浏览器请求。
      4. wsgi.py:帮助Django提供它创建的文件(Web server gateway interface Web服务器网关接口)

    7, 创建数据库

    • Django将大部分与项目相关的信息都存储在数据库中,因此需要创建一个供Django使用的数据库。修改数据库称为迁移数据库。首次执行命令migrate时,将让Django确保数据库与项目的当前状态匹配。在使用SQLite的新项目中首次执行这个命令时,Django将新建一个数据库。
    (ll_env)D:\code\PythonCode\Python编程从入门到实践\learning_log> python manage.py migrate
    
    • 运行完后,Django创建一个新文件——db.sqlite3.

    8, 查看项目

    • 执行命令启动服务器
    (ll_env)D:\code\PythonCode\Python编程从入门到实践\learning_log> python manage.py runserver
    
    • 现在打开一款Web浏览器输入URL:http://127.0.0.1:8000/ 查看结果
    • 注意:若要关闭服务器可按:Ctrl + C
    展开全文
  • 使用 Django本小节内容适合 Python 开发人员阅读。我们现在将使用 Docker Compose 配置并运行一个 Django/PostgreSQL 应用。在一切工作开始前,需要先编辑好三个必要的文件。第一步,因为应用将要运行在一个满足所有...

    使用 Django

    本小节内容适合 Python 开发人员阅读。

    我们现在将使用 Docker Compose 配置并运行一个 Django/PostgreSQL 应用。

    在一切工作开始前,需要先编辑好三个必要的文件。

    第一步,因为应用将要运行在一个满足所有环境依赖的 Docker 容器里面,那么我们可以通过编辑 Dockerfile 文件来指定 Docker 容器要安装内容。内容如下:

    FROM python:3

    ENV PYTHONUNBUFFERED 1

    RUN mkdir /code

    WORKDIR /code

    ADD requirements.txt /code/

    RUN pip install -r requirements.txt

    ADD . /code/

    以上内容指定应用将使用安装了 Python 以及必要依赖包的镜像。更多关于如何编写 Dockerfile 文件的信息可以查看 [镜像创建](../image/create.md#利用 Dockerfile 来创建镜像) 和 Dockerfile 使用。

    第二步,在 requirements.txt 文件里面写明需要安装的具体依赖包名。

    Django>=1.8,<2.0

    psycopg2

    第三步,docker-compose.yml 文件将把所有的东西关联起来。它描述了应用的构成(一个 web 服务和一个数据库)、使用的 Docker 镜像、镜像之间的连接、挂载到容器的卷,以及服务开放的端口。

    version: "3"

    services:

    db:

    image: postgres

    web:

    build: .

    command: python3 manage.py runserver 0.0.0.0:8000

    volumes:

    - .:/code

    ports:

    - "8000:8000"

    links:

    - db

    现在我们就可以使用 docker-compose run 命令启动一个 Django 应用了。

    $ docker-compose run web django-admin.py startproject django_example .

    Compose 会先使用 Dockerfile 为 web 服务创建一个镜像,接着使用这个镜像在容器里运行 django-admin.py startproject composeexample 指令。

    这将在当前目录生成一个 Django 应用。

    $ ls

    Dockerfile docker-compose.yml django_example manage.py requirements.txt

    如果你的系统是 Linux,记得更改文件权限。

    sudo chown -R $USER:$USER .

    首先,我们要为应用设置好数据库的连接信息。用以下内容替换 django_example/settings.py 文件中 DATABASES = ... 定义的节点内容。

    DATABASES = {

    "default": {

    "ENGINE": "django.db.backends.postgresql",

    "NAME": "postgres",

    "USER": "postgres",

    "HOST": "db",

    "PORT": 5432,

    }

    }

    这些信息是在 postgres 镜像固定设置好的。然后,运行 docker-compose up :

    $ docker-compose up

    django_db_1 is up-to-date

    Creating django_web_1 ...

    Creating django_web_1 ... done

    Attaching to django_db_1, django_web_1

    db_1 | The files belonging to this database system will be owned by user "postgres".

    db_1 | This user must also own the server process.

    db_1 |

    db_1 | The database cluster will be initialized with locale "en_US.utf8".

    db_1 | The default database encoding has accordingly been set to "UTF8".

    db_1 | The default text search configuration will be set to "english".

    web_1 | Performing system checks...

    web_1 |

    web_1 | System check identified no issues (0 silenced).

    web_1 |

    web_1 | November 23, 2017 - 06:21:19

    web_1 | Django version 1.11.7, using settings "django_example.settings"

    web_1 | Starting development server at http://0.0.0.0:8000/

    web_1 | Quit the server with CONTROL-C.

    这个 Django 应用已经开始在你的 Docker 守护进程里监听着 8000 端口了。打开 127.0.0.1:8000 即可看到 Django 欢迎页面。

    你还可以在 Docker 上运行其它的管理命令,例如对于同步数据库结构这种事,在运行完 docker-compose up 后,在另外一个终端进入文件夹运行以下命令即可:

    $ docker-compose run web python manage.py syncdb

    展开全文
  • Django是一个Web框架——一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能让你更轻松地读写数据库、管理用户等。 1、建立项目 开始编写一个名为“学习笔记”的Web应用程序,让用户能够记录感兴趣的...

    Django是一个Web框架——一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能让你更轻松地读写数据库、管理用户等。

    1、建立项目

    开始编写一个名为“学习笔记”的Web应用程序,让用户能够记录感兴趣的主题,并在学习每个主题的过程中添加日志条目。“学习笔记”的主页对这个网站进行描述,并邀请用户注册或登录。用户登录后,就可以创建主题、添加新条目以及阅读既有的条目。

    1.安装Python:Python

    2.安装IDE(我使用的是Pycharm社区版):Pycharm

    3.在Pycharm新建项目:

    File->New Project,设置如下
    1592254-20190709001739695-1340626914.png

    4.安装Django:Django

    • cmd进入终端,cd到python安装的Script文件夹下,利用pip命令安装Django,或将python安装目录Script文件夹路径加入环境变量中,则可直接使用pip命令。
    • 使用pip install django命令安装Django

    5.在Django中创建项目:

    在Pycharm中新建的项目中,利用Terminal终端在虚拟环境下使用django-admin startproject project-name .创建项目,注意命令后的点号,书上提到,忘记点号在部署应用程序时会遇到一些配置问题。忘记点号,就将创建的目录文件夹删除再运行一边命令

    1592254-20190709001802731-633460983.png

    Django在项目中新建了一个名为learnning_log的目录,其中最重要的是settings.py、urls,py、wsgi.py

    • 文件settings.py指定Django如何与你的系统交互以及如何管理项目。在开发过程中我们将修改其中过一些设置,并添加一些设置
    • 文件urls.py告诉Django应创建哪些网页来响应浏览器请求
    • 文件wsgi.py帮助Django提供它创建的文件,这个文件名是web server gateway interface(Web服务器网关接口)的首字母缩写

    还创建了一个名为manage.py的文件,这是一个简单的程序,它接受命令并将其交给Django的相关部分去运行。我们将使用这些命令来管理诸如使用数据库和运行服务器等任务

    1592254-20190709001847397-224356854.png

    6.创建数据库:

    使用migrate命令创建一个供Django使用的数据库:python manage.py migrate

    我们将修改数据库称为迁移数据库。首次执行命令migrate时,将让Django确保数据库与项目的当前状态匹配。在使用SQLite的新项目中首次执行这个命令时,Django将创建一个数据库

    1592254-20190709001925857-1395194250.png

    运行过命令后,我们会发现,项目中多出来了一个db.sqlite3文件,SQLite是一种使用单个文件的数据库,是编写简单应用程序的理想选择,因为它让你不用太关注数据库管理的问题

    1592254-20190709002000080-333596264.png

    7.查看项目

    执行命令runserver,合适Django是否正确地创建了项目:python manage.py runserver

    1592254-20190709002017340-701265159.png

    Django启动一个服务器,让你能够查看系统中地项目,了解他们地工作。当浏览器中输入url请求网页时,该Django服务器将进行响应:生成合适地网页,并将其发送给浏览器

    注意 如果出现错误消息 “That portis already iin use"(指定端口已被占用),请执行python manage.py runserver 8001,让Django使用另一个端口;如果这个端口也不可用,请不断执行上述命令,更改其中指定的端口号,直到找到可用的端口。

    1592254-20190709002142825-1767505225.png

    2、创建应用程序

    Django项目由一系列应用程序组成,它们协同工作,让项目成为一个整体。我接下来创建一个应用程序,他将完成项目的大部分工作。

    当前,在前面打开的终端窗口运行着runserver。我们再打开一个终端窗口,执行命令startapp

    1592254-20190709152701998-1104891916.png

    命令startapp appname让Django建立创建应用程序的基础设施。现在查看项目目录,新增了一个文件夹learning_logs

    1592254-20190709152713022-403346284.png

    该文件夹中最重要的文件是models.py、admin.py、views.py

    接下来使用models.py来定义我们在应用程序中管理的数据

    1.定义模型:

    我们考虑设计的数据。每位用户在学习笔记中需要创建很多主题。用户输入每个条目都与特定主题相关联,这些条目以文本的形式显示。我们还需要存储每个条目的时间戳,以便能够告诉用户各个条目都是什么时候创建的

    打开models.py,它为我们导入了模块models,我们还能创建自己的模型。模型告诉Django如何处理应用程序中存储的数据。现在我们创建一个名为Topic的类,继承Model,表示用户将存储的主题的模型,它包含text和date_added两个属性

    1592254-20190709152728649-1018960880.png

    • 属性text是一个CharField——由字符或文本组成的数据,我们还设置max_length=200告诉Django在数据库中主题名应预留多少空间
    • 属性date_added是一个DateTimeField——记录日期和时间的数据,我们传递auto_now_add=True,当用户创建新主题时,让Django将该属性设置成当前日期和时间
    • 我们还需要告诉Django,默认使用哪个属性显示有关主题的信息。注意:在python2.7中,应调用__ unicode __ ()方法而不是__ str __ ()方法

    2.激活模型:

    要使用模型,必须让Django将应用程序包含到项目中,为此应该在settings.py中的INSTALLED_APPS片段中添加我们的应用程序信息

    1592254-20190709152741164-445769822.png

    接下来,需要让Django修改数据库,使其能够存储与模型Topic相关的信息。为此,在终端窗口执行makemigrations命令让Django确定该如何修改数据库,执行后Django将创建一个迁移文件在数据库中为模型Topic创建一个表

    下面,使用migrate来应用这种迁移,让Django替我们修改数据库

    1592254-20190709152755833-344063914.png

    1592254-20190709152818620-962312100.png

    3.Django管理网站

    为应用程序定义模型时,Django提供的管理网站admin site让我们能够轻松地处理模型。接下来,我们就建立管理网站,并通过它使用模型Topic来添加一些主题

    创建超级用户:

    执行python manage.py createsuperuser命令在Django中创建超级用户,执行命令后,Django提示输入超级用户的用户名(默认)、邮箱(可放空)、密码、确认密码

    1592254-20190709152839341-217057927.png

    向管理网站注册模型:

    在models.py所在目录中的admin.py文件中输入下面代码向管理网站注册Topic

       from learning_logs.models import Topic
       
       admin site.register(Topic)

    1592254-20190709153500622-650174015.png

    现在使用超级用户账户访问登录网站:http://localhost:8000/admin/ ,输入刚创建的超级用户的用户名和密码,进入如下界面(Django administration)。这个网页能让我们添加和修改用户和用户组,还可以管理刚才定义的模型Topic相关的数据,接下来,我们来添加第一个主题

    1592254-20190709152950763-885551954.png

    添加主题:

    单击Topics进入主题网页,它几乎是空的,因为我们还没有添加任何主题

    1592254-20190709153005381-411462884.png

    单击Add,看到一个用于添加新主题的表单,在第一个输入框中输Chess,再单击Save,这将返回主题管理页面,其中刚创建的主题已被添加,按照该步骤我们再创建一个Rock Climbing主题

    1592254-20190709153015771-1743431833.png

    1592254-20190709153023254-723098991.png

    4.定义模型Entry:

    特定主题下有用户在学习笔记记录的知识条目,这是一种多对一关系,即多个知识条目关联到同一个主题

    像Topic一样,我们创建Entry模型,它继承Django基类Model,拥有topic、text、date_added三个属性

    1592254-20190709153037859-828053225.png

    • topic属性:是一个ForeignKey实例,它引用数据库中的另一条记录,将每个条目关联到特定的主题
    • text属性:一个不限制长度的TextField实例
    • date_added属性:条目的时间戳
    • Meta类:嵌套的Meta类,用于存储管理模型的额外信息,在这里我们能够设置一个特殊属性,让Django在需要时使用Entries来表示多个条目。如果没有这个类,Django将使用Entrys来表示多个条目
    • __ unicode __ ()方法:告诉Django,呈现条目时应该显示那些信息,我们只显示text的前50个字符,并用...指出显示内容并非整个条目

    迁移模型Entry:

    由于我们新添加了一个新模型,因此需要再次迁移数据库

    这个过程是:

    1. 修改models.py
    2. 执行命令python manage.py makemigrations app_name
    3. 再执行python manage.py migrate

    1592254-20190709153053992-844542604.png

    生成了一个新的迁移文件,告诉Django如何修改数据库,使其能存储与模型Entry相关的信息,然后执行migrate,应用迁移

    向管理网站注册Entry:

    在admin.py中注册模型Entry

    1592254-20190709153103791-471399956.png

    返回http://localhost:8000/admin/,你将看到learing_logs下列出了Entries,单击Entries的Add链接或单击Entries再选择Add entry。

    1592254-20190709153114488-1436644656.png

    你将看到一个下拉列表,能选择要创建哪个主题的条目,还有一个输入条目的文本框。我们添加一个Chess主题的条目,如下:

    1592254-20190709153124137-394875706.png

    返回条目管理页面,我们能看到添加的条目以及使用text[:50]呈现出来的条目信息

    1592254-20190709153253876-1122229141.png

    3、创建网页:学习笔记主页

    使用Django创建网页的过程通常分三个阶段:定义URL、编写视图和编写模板。首先,你必须定义URL模式。URL模式描述了URL是如何设计的,让Django知道如何将浏览器请求与网站URL匹配,以确定返回哪个网页。

    每个URL都被映射到特定的视图——视图函数获取并处理网页所需的数据。视图函数通常条用一个模板,后者生成浏览器能够理解的网页。我们接下来创建学习笔记的主页。我们将定义主页的URL、编写其视图函数并创建一个简单的模板

    鉴于我们只是要确保”学习笔记“按要求的那样工作,我们将暂时让这个网页尽可能简单。Web应用程序能够正常运行后,设置样式可使其更有趣,但中看不中用的应用程序毫无意义。目前的主页只显示标题和简单的描述。

    1.映射URL:

    用户通过在浏览器中输入URL以及单击链接来请求网页,因此我们需要确定项目所需的URL。

    当前,基础URL(http://localhost:8000/ )返回默认的Django网站,让我们知道正确建立了项目。我们将修改这一点,让这个基础URL映射到”学习笔记“的主页

    首先,我们修改项目文件夹中的urls.py

    1592254-20190709191911697-483402844.png

    urls.py文件的urlpatterns主体包含了项目中的应用程序的URL。其中的admin.site.urls定义了可在管理网站中请求的所有URL

    我们添加了learning_logs.urls并包含namespace将learning_logs的URL同项目中的其他URL区分开来,这在项目扩展时很有帮助

    所以我们又需要在文件夹learning_logs中创建另一个urls.py文件:

    1592254-20190709192013746-1423386610.png

    在应用程序的urls.py中,我们导入了url模块用于将URL映射到视图,还导入了views模块,其中的句点表示让Python从当前的urls.py模块所在的文件夹中导入视图。变量urlpatterns是一个包含了可在应用程序learning_logs中请求的网页

    实际的URL模式是一个对函数url()的调用,这个函数接受三个实参:

    • 第一个是一个正则表达式。例如:r'^$',其中的r让Python将接下来的字符串视为原始字符串,引号包括正则表达式的起止。脱字符^让Python查看字符串的开头,美元符$让Python查看字符串末尾
    • 第二个实参指定了要调用的视图函数。当请求的URL与前述正则表达式匹配时,Django将调用views.index(视图编写在后面)
    • 第三个实参将这个URL模式的名称指定为index,让我们能够在代码的其他地方引用它。当需要提供主页的链接时,都将使用这个名称,而不用编写URL

    2.编写视图:

    视图函数接受请求中的信息,准备好生成网页所需的数据,再将这些数据发送给服务器

    我们在learning_logs应用程序的views.py中为主页编写视图,如下:

    1592254-20190709192025342-1145024712.png

    URL请求与我们刚才定义的模式匹配时,Django将在文件views.py中查找函数index(),再将请求对象传递给这个视图函数。在这里,我们不用处理任何数据,因此这个函数只调用render(),向它提供两个实参:原始请求对象以及一个用于创建网页的模板。接下来就是编写模板了

    3.编写模板:

    模板定义了网页的结构。模板定义了网页是什么样的,每当网页被请求时,Django将填入相关的数据。模板让你能够访问试图提供的任何数据。

    我们在learning_logs中新建一个文件夹,将其命名为templates,在templates中再创建一个learning_logs文件夹(这似乎有些多余?但建立了Django能够明确解读的结构,即使项目很大,包含很多应用程序亦如此)。然后创建index.html文件,编写index.html代码

     <p>Learning Log</p>
    
     <P>Learning Log helps you keep track of your learning, for any topic you're learning about.</p>

    现在,我们再请求项目的基础URL——http://localhost:8000/ ,将看到刚才创建的网页,而不是默认的Django网页。Django接受请求的URL匹配了模式r'^$',因此调用函数views.index(),于是使用index.html包含的模板来渲染网页,结果如下

    1592254-20190709192158023-214198574.png

    4、创建其他网页

    制定创建网页的流程后,可以开始扩充”学习笔记“的项目了。我们将创建两个显示数据的网页,其中一个列出所有的主题,另一个显示指定主题的所有条目。对于每个网页我们都将指定URL模式,编写一个视图函数,并编写一个模板。

    1.模板继承:

    创建网站时,几乎都有一些所有网页都将包含的元素。在这种情况下,可以编写一个包含通用元素的父模板,并让每个网页都继承这个模板,而不必在每个网页中重复定义这些通用元素。这种方法让你能专注于开发每个网页的独特方面,还能让修改项目的整体外观容易很多

    我们在learning_logs/templates/learning_logs下创建我们的模板

    创建一个base.html

    1592254-20190709192212077-1113532356.png

    其中我们使用了模板标签{% %},模板标签是一小段代码,生成要在网页中显示的信息。这里,模板标签{% url 'learning_logs:index' %}生成一个url,该url于learning_logs/urls.py中定义的名为index的URL模式匹配

    利用模板标签来生成URL,有利于更新链接。要修改项目中的URL,只需修改urls.py中的URL模式,这样网页被请求时,Django自动插入修改后的URL

    重写index.html,使其继承base.html,如下

    1592254-20190709192222216-922423827.png

    标签{% extends %}指定继承的父模板

    标签{% block %}定义content块,再使用{% endblock content %}指定了内容定义的结束位置

    这里,模板继承的优点开始显现出来了:在子模版中,只需包含当前网页特有的网内容。

    2.显示所有主题的页面:

    URL模式
    1592254-20190709192232139-2034326352.png
    这个模式与这样的URL匹配:基础URL后面跟着topics,可以在末尾包含斜杠,也可以省略它,但单词topics后面不能又任何东西,否则就与该模式不匹配。该模式匹配的请求都交给views.py中的函数topics()处理

    视图
    1592254-20190709192242811-1917070269.png
    导入所需数据相关联的Topic模型,将Topic对象按属性date_added排序,存入一个上下文字典中,创建使用数据的网页时,除对象request和模板的路径外,我们还将变量context传递给render()

    模板
    1592254-20190709192252247-1205883187.png
    与模板index.html类似的,topics.html继承base.html父模板
    我们使用了一个相当于for循环的模板标签,遍历字典context中的列表topics,{{ topic }}是一个模板变量,Django会将这部分替换为topic的当前值
    我们还使用了模板标签{{% empty % }}告诉Django在topics列表为空的时候怎么办
    现在修改父模板,使其包含到显示所有主题的页面的链接
    1592254-20190709192303746-1427246323.png
    到浏览器主页单击Topics链接看到如下网页
    1592254-20190709192317520-1971211012.png

    3.显示特定主题的页面

    URL模式
    1592254-20190709192328473-646243916.png
    我们再看看这个URL模式中的正则表达式——r'^topics/(?P<topic_id>\d+)/$'。r让Django将这个字符串是为原始字符串,并指出正则表达式包含在引号内。表达式的第二部分(/(?P<topic_id>\d+)/)与包含在两个斜杠内的整数匹配,并将这个整数存储在一个名为topic_id的实参中。这部分表达式两边的括号捕获URL中的值;?P<topic_id>即将匹配的值存储在topic_id中;\d+与包含在两个斜杠内的任何数字都匹配,不管这个数字多少位
    发现URL与这个模式匹配时,Django将调用视图函数topic(),并将存储在topic_id中的值作为实参传递给它

    视图
    1592254-20190709192338066-2037452043.png
    topic函数中包含了一个形参,我们使用get()获取topic_id指定的主题,使用entry_set.order_by()获取降序排序的条目。这是一种查询,在自己的项目中编写类似的查询时,我们应该使用Django shell先进行尝试。然后把查询结果存入字典中发送给模板topic.html

    模板
    1592254-20190709192347097-1481831711.png
    该模板也继承了base.html父模板
    特别的,在该模板中我们使用了模板过滤器|用一个竖线表示。例如date: 'M d, Y H:i'以这样的格式显示时间戳:January 1,2015 23:00,过滤器linebreaks将包含换行符的长条目转换成浏览器能够理解的格式,以免显示一个不间断的文本块

    将显示所有主题的页面中的每个主题都设置为链接
    1592254-20190709192446445-635708302.png
    在topics请求页面中,链接到显示相应主题的页面,如http://localhost:8000/topics/1/ ,结果如下
    1592254-20190709192403700-297288634.png

    转载于:https://www.cnblogs.com/xiaobing666/p/11154922.html

    展开全文
  • Python编程从入门到实践:项目3 Web应用程序学习总结 #学习背景 书籍名称:《Python编程从入门到实践》Eric Mattes著。编程软件:Pycharm,Python版本3.7.4 #项目概述 这个项目的目的就是让学习者学习:网站创建环境...
  • 在本章,你将学习如何使用Django开发一个名为“学习笔记”的项目,这是一个在线的日志系统,记录所学的特定主题的知识,主题下面还可以设置多个条目。 一、 建立项目 制定规范:项目的目标、功能,项目的外观...
  • [英]马克·阿姆斯特朗孙以丰译本书是一部拓扑学入门书。作者主要介绍了拓扑空间中的拓扑不变量,以及相应的计算方法。本书涉及点集拓扑、几何拓扑、...[德]达恩·巴德尔(Dan Bader)本书致力于帮助Python开发人员...
  •  Django是一个Web框架,一套用于帮助开发交互式网站的工具,其能够响应网页请求,还能让你更轻松地读写数据库、管理用户等;许多成功的网站和APP都基于Django。 2.虚拟环境安装、建立、激活  要使用Django,首先...
  • 开发环境:pycharm-professional-2018.2 Django版本:version 2.1 参考https://segmentfault.com/q/1010000014177253的内容,主要是因为Django更新至2.0以上版本了,之前的1.x版本在topic= models.ForeignKey...
  • 慕课:Django入门实践

    千次阅读 2017-12-09 13:09:25
    Django是python web的开发框架Django个人网站,从开发到部署总结Django 中文文档目标:学习并掌握Django框架MVCMVC框架的核心思想是:解耦 设计高度拓展,向后兼容,低耦合,高内聚(电脑零件模块类比)降低各功能...
  • 开发系统和开发IDE 开发系统: Ubuntu 16.0.4 LTS 开发IDE: Visual Studio Code 版本: ...资料《Python编程从入门到实践》书籍 链接:https://pan.baidu.com/s/1USkqvL2dLU3Q9XplVaGQJg 提取码:zoyc GitHub: htt...
  • 如果在一台计算机下,想开发多个不同的项目,需要用到同一个包的不同版本,如果还使用命令在同一个目录下安装或者更新,可能影响其它项目,或新项目用到的包的版本与当前版本有冲突,这样会导致其它项目无法运行,...
  • Django是一个web框架——一套用于开发交互式网站的工具‘它能够响应网页的请求,还能让你更轻松的读写数据库、管理用户等。 18.1 建立项目 建立项目时,首先需要以规范的方式对项目进行描述,再建立虚拟环境,以便在...
  • Django入门实践指南系列是由咱们知识星球发起的一个实践项目, 教程将围绕一个论坛项目展开,基本的开发环境搭建开始讲解,领域模型设计、模板、视图、URL、模型、Dj...
  • Python编程从入门到实践的Web应用程序(一),Win10...《Python编程从入门到实践》这本书在开发这个项目时大多数是在Linux系统下操作,里面有的细节部分在win10下会出现不少bug, 所以为了在win10环境下能正常开发,我接
  • emmmmm 一段时间没上来了,这个几个章节之前已经over 但是我电脑布Heroku老是有问题heroku login404 ...django web框架帮助开发交互式的网站,响应网页的请求,读取管理用户等。主要记录django 的安装,应用程序的创...
  • 《Python编程:从入门到实践》笔记。从本篇开始将是该书的最后一个项目,将用3篇文章来介绍Django的基础。完成一个“学习笔记”的小网站。 1. 前言 在本篇中,我们将: 用Django开发一个名为“学习笔记”...
  • 来源:《Python编程:从入门到实践》 文章目录1 建立项目1.1 制定规范1.2 建立虚拟环境1.3 安装virtualenv1.4 激活虚拟环境1.5 安装Django1.6 在Django中创建项目1.7 创建数据库1.8 查看项目 本章学习如何使用...
  •  ps:下面我所说的都是在windows环境下,若你在linux或者其他环境下,请参考《python从入门到实践》此书后面的项目实战(作者也是参考这本书,只是书中是在linux环境下而作者写的都是基于windows环境)。1.建立项目...
  • 这个系列的知识与项目是对《Python编程 从入门到实践》一书中第18到20章内容的一个总结概括与拓展,我们的目的是了解Web程序应用的基础知识,并完成书中所给出的示例项目:开发一个在线日志系统。 这篇文章中,我们...
  • 本次学习参考了《Python编程从入门到实践》 进入正题 1、什么是Django 一个可以使Web开发工作愉快并且高效的Web开发框架。 使用Django,使你能够以最小的代价构建和维护高质量的Web应用。由于先前没有学过任何Web...
  • 本博文源于阅读《Django开发从入门到实践》(段艺 涂伟忠著)中的几张表格。主要囊括了列表、双端队列、字典、集合常用容器操作的时间复杂度分析
  • 一个Django网络开发项目,用于汇总入门级工作,使人们更容易通过一站式商店找到工作,而不是四处浏览LinkedIn,Indeed等。看到的工作不是入门级但仍被错误列出因此。 对于我自己和其他人来说,这是一个个人的麻烦,...
  • 最近在练习《python编程,从入门到实践》这本书中的第十九章时,在编写完添加主题部分的代码时,所产生的的页面和书上的页面不一致,而且没有add topic的按钮,图片如下。而且点进Topics时出现了如下问题,缺少了...
  • 资源选自《Python变成从入门到实践》一书,该书提供三个Python入门项目,此为第三个项目Web应用程序,利用Python的Django模块创建和运行Web应用程序。开发顺序可参见我的一片博文。
  • django中的一个小改动

    2017-12-22 22:17:41
    本人是python新手,目前按照《python编程:从入门到实践》中的web开发学习在做.其中碰到了一条关于外键的语句:topic = models.ForeignKey(Topic) ,然后按照书上的写了,却始终无法成功.最后Django 2.0的文档发现,现在...

空空如也

空空如也

1 2 3 4 5
收藏数 87
精华内容 34
热门标签
关键字:

django开发从入门到实践