Django建站过程
- 打开终端
$: mkdir root
$: cd root
$: django-admin startproject firstsite
$: cd firstsite
$: atom .
- 将manage.py文件中的第一行末尾加上
3
,指定用Python3 $: python3 manage.py startapp firstapp
- 在setting.py的INSTALLED_APPS列表中添加
'firstapp' ,
$: python3 manage.py migrate
$: python3 manage.py runserver
,打开127.0.0.1:8000即可看到网站成功创建
高频小套路
思路&&步骤
- model中创建class,并定义字段
- 先把model层中的数据引入view层,再在views中写对数据操作的函数
- 经过view处理,需要展示的数据装载到template层中,在html中使用吗模板变量
{{ }}
- 在url中分配网址
model层
class People(models.Model):
name = models.CharField(null=True, blank=True, max_length=200)
$: python3 manage.py makemigrations
$: python3 manage.py migrate
view层
def first_try(request):
...
t = Template(html_string)
# 模板
c = Context({'person': person})
# 上下文,字典的形式, 与数据相关, Context
web_page = t.render(c)
# 进行渲染,建立某种联系
return HttpResponse(web_page)
# 返回response
# render(request, x.html, context )
# context 上下文,把数据库中的数据与template层展示的数据,在view层,完成映射
def index(request):
context = {}
article_list = Article.objects.all()
context['article_list'] = article_list
index_page = render(request, 'first_web_2.html', context)
return index_page
后台超级管理员
python3 manage.py createsuperuser
如果想在后台看到model中的数据,需要在admin.py中注册
from firstapp.models import People
admin.site.register(People)
模板语言
- 模板标签
{% %}
{% for item in list %}
{{ item }}
{% endfor %}
- 模板变量
{{ }}
- 模板过滤器
{{ article.context | truncatewords:100 }}
注意事项
- 如果要使用自己建立template文件夹,必须在setting的tempaltes 列表中加上
'DIRS': [os.path.join(BASE_DIR, 'templates').replace('\\', '/')],
让网站能找到正确对应的template文件夹 - 在template中的每个html文件的标签前一行加上
{% load staticfiles %}
,css等引入的文件路径也要替换(eg.{% static 'css/semantic.css' %}
),图片引用也需要处理 - 每次修改完数据库,都要进行如下操作
$: python3 manage.py makemigrations
$: python3 manage.py migrate
4, Get一般被用来查阅数据,Post被用来提交数据
学习方法
- 很多时候,文本的形式学习可能更快,当然前提是教程够系统,步骤具有可操作性.
视频的优势是: 对新手友好,而且看视频更直接地看到操作,不用思考,一步一步模仿即可,更容易学下去,视频一直放,自己就会一直做.缺点是:可能进入伪学习的状态,自我感激良好,但是却没有学到东西,脑子不跟着思考.而且不便于以后复习,可能仅仅是忘记了一个点,但是为了找到这个点,可能需要把整个视频看一遍.所以如果是通过看视频来学习,记笔记很必要. - 为了增强自己对代码的理解,增强自己的debug能力,可以试着把正确的运行成功的代码修改某些内容,然后观察能否正常运行,报什么错,有什么效果,并记录下来.以后遇到相似的问题,就能快速判断出问题所在了.