18章记录过程

进入虚拟环境

在这里插入图片描述
虚拟环境中安装django
在这里插入图片描述新建一个文件夹
记得使用django-admin 而不是django-admin.py 这里和书上不一样
在这里插入图片描述输入dir可以查看目录
在这里插入图片描述在这里插入图片描述
被创建出来的文件夹里的东西
在这里插入图片描述

创建数据库:

python manage.py migrate

在这里插入图片描述在这里插入图片描述

检查是否创建了项目 runserver

python manage.py runserver

打开浏览器 输入之前打印的网址 查看状态
在这里插入图片描述

激活虚拟环境

打开另外一个终端 切换到manage.py的目录 激活虚拟环境 startapp
在这里插入图片描述作为一个app名字被创建了一个文件夹 就是下午六点的那个
在这里插入图片描述里头的东西
在这里插入图片描述

定义模型Topic

在这里插入图片描述
补充的代码:

from django.db import models
class Topic(models.Model):
    text=models.CharField(max_length=200)
    date_added=models.DateTimeField(auto_now_add=True)

    def __str__(self):
        """返回模型的字符串表示"""
        return self.text

激活模型:

加入第42行:
在这里插入图片描述`

#我的程序`

    'learning_logs',

修改数据库

变成终端操作:
在这里插入图片描述

(ll_env) D:\日常生活\python练习作业\learning_log>python manage.py makemigrations learning_logs

应用迁移

让Django修改数据库
在这里插入图片描述(ll_env) D:\日常生活\python练习作业\learning_log>python manage.py migrate

创建超级用户

在这里插入图片描述python manage.py createsuperuser

在这里插入图片描述email空着了
填写的密码是ab123456
被自动隐藏了 除了用户名

在admin.py(learning_logs)中输入代码 注册topic
在这里插入图片描述from learning_logs.models import Topic
admin.site.register(Topic)

尝试一下登录管理员(记得要先激活 用runserver)

在这里插入图片描述添加两个topic
在这里插入图片描述

添加模型Entry 在models.py中

在这里插入图片描述

class Entry(models.Model):
    """学习到的有关某个主题的具体知识"""
    topic = models.ForeignKey(Topic,**on_delete=models.CASCADE,**) ##这个书上没有 是百度的 ondelete,不然会报错
    text = models.TextField()
    date_added=models.DateTimeField(auto_now_add=True)

    class Meta:
        verbose_name_plural = 'entries'

    def __str__(self):
        """返回模型的字符串表示"""
        return self.text[:50]+"..."

迁移数据库并查看输出

D:\日常生活\python练习作业\learning_log>python manage.py makemigrations learning_logs
Migrations for 'learning_logs':  ##自动生成的打印的
  learning_logs\migrations\0002_entry.py
    - Create model Entry

D:\日常生活\python练习作业\learning_log>python manage.py migrate
Operations to perform:  #自动
  Apply all migrations: admin, auth, contenttypes, learning_logs, sessions
Running migrations:
  Applying learning_logs.0002_entry... OK

在这里插入图片描述

注册Entry,修改admin.py

from django.contrib import admin

# Register your models here.
from learning_logs.models import Topic,Entry
admin.site.register(Topic)
admin.site.register(Entry)

在这里插入图片描述现在/admin页面中出现的:(多了entry)
在这里插入图片描述在这里插入图片描述

交互式终端Django shell

在这里插入图片描述python manage.py shell

在这里插入图片描述如何查看分配给每个主题对象的ID
在这里插入图片描述

>>> topics =Topic.objects.all()
>>> for topic in topics:
...   print(topic.id,topic)
...

根据id查询属性

>>> t= Topic.objects.get(id=1)
>>> t.text
'Chess'
>>> t.date_added
datetime.datetime(2020, 6, 13, 11, 51, 17, 75113, tzinfo=<UTC>)

在这里插入图片描述

18.3映射url

修改urls.py

在这里插入图片描述
按照图片中的会报错,就百度了一下,是include的用法错误,不重新截图了,按照复制的代码

urlpatterns = [
    url(r'^admin/', admin.site.urls),# 不用include()函数
    url(r'', include(('learning_logs.urls','learning_logs'), namespace='learning_logs')),
]

在learning_logs中新建一个urls.py

在这里插入图片描述编辑此文件
在这里插入图片描述

"""定义learning_logs的url模式"""
from django.conf.urls import url
from . import views

urlpatterns =[
    #主页
    url(r'^$',views.index,name='index'),
]

编写视图

为主页编写视图
在这里插入图片描述

from django.shortcuts import render

# Create your views here.
def index(request):
    """学习笔记的主页"""
    return render(request,'learning_logs/index.html')

编写模块

新建一个文件夹叫templates,在这里面再建一个learning_logs,再建一个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的事情了
在这里插入图片描述

创建其他网页 模板继承

父模块

新建一个base.html 和index同目录
在这里插入图片描述

<p>
## 模板标签 {%  %}
    <a href="{% url 'learning_logs:index' %}">Learning Log</a>
</p>

{% block content %}{% endblock content %}

子模块继承(index)

在这里插入图片描述

{% extends "learning_logs/base.html" %}##继承的父模板

{% block content %}##没有继承的内容都这content两个标签之间

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

{% endblock content %}

在这里插入图片描述

显示所有主题的页面

再次修改urls
在这里插入图片描述

#显示所有的主题
    url(r'^topics/$',views.topics,name='topics'),

修改views.py
在这里插入图片描述

def topics(request):
    """显示所有主题"""
    topics = Topic.objects.order_by('date_added')
    context = {'topics':topics}
    return render(request,'learning_logs/topics.html',context)

模板
新建topics.html 和index等同一个目录
在这里插入图片描述

{% 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 %}

显示特定主题的页面

在learning_logs/urls.py中
在这里插入图片描述

#特定主题的详细界面
    url(r'^topics/(?P<topic_id>\d+)/$',views.topic,name='topic'),

修改视图
在这里插入图片描述

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)

模板
新建的topic.html
在这里插入图片描述

<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  %}

修改topics.html
在这里插入图片描述 <a href="{% url 'learning_logs:topic' topic.id %}">{{ topic}}</a>

最终页面

在这里插入图片描述在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值