入门django———搭建第一个django的网站

news/2024/5/18 21:44:55/文章来源:https://shelgi.blog.csdn.net/article/details/96478012

背景

最近一直在学Java,每天和各种对象打交道。当够了’渣男’突然想起来好久没有写python了,毕竟python才是我的最爱。另外最近也在搭建ubuntu的caffe+tensorflow+digits环境,老师也让我们自己学学flask和django。说实话digits真的不好搭,ubuntu上光nvidia驱动这一块就够让人头疼的了,实在想骂人的时候就动手写了一个基本的django网站,大概花费两个小时左右吧,可以当放松,另外书上代码有问题的地方我也会改正,最后成功完成了。

先上个成果图

这是主页
这是特定页面

现在开始搭建

我的环境是win10+python3.7+django2.2.3(关于看django版本后面会讲)

1.虚拟环境的建立和准备工作

首先新创建一个文件夹,命名为learning_log。
打开cmd用cd切换到这个目录。

#切换成功后在cmd中使用下面命令创建名为ll_env的虚拟环境
python -m venv ll_env
#激活ll_env这个虚拟环境
ll_env\Scripts\activate#激活后安装Django
pip install Django#查看安装的Django版本
python -m django --version
#显示的就是django的版本啦

在这里插入图片描述
注意,使用的是虚拟环境的话前面会有(ll_env)这个显示的,不然就是没有激活虚拟环境。

2.创建项目

首先新建一个项目

django-admin.py startproject learning_log .
#注意后面的结束点一定要写上,这样才能使项目有合适的目录结构
#用dir查看一下目录结构或者自己打开文件夹查看,应该是有ll_env,manage.py和learning_log三个文件
#再看看learning_log的内容
dir learning_log
#应该是__init__.py,setting.py,urls.py和wsgi.py四个.py文件

因为我的已经做好了,目录里面多了很多东西所以这里就不展示了

创建数据库

同样在激活的虚拟环境下,用下面的命令

python manage.py migrate

然后会发现learning_log中多了一个db.sqlite3文件,这个就是数据库了。

检查项目是否成功创建

#还是在激活的虚拟环境下输入
python manage.py runserver

打开浏览器,输入网址localhost:8000应该可以看到django的欢迎界面,如下
在这里插入图片描述
想要停止服务,还是在cmd中按住ctrl+c就好啦

到此,确保一切正常后就可以开始写我们自己的内容了

3.创建应用程序和网页

ctrl+c停止掉服务后,在cmd中开始创建自己的app

python manage.py startapp learing_logs
#注意,我这里是learing_logs,书中原本是learning_logs,我是为了自己好区分点就在前面少了n。如果按书上来的话,在我后面的代码中对应地方把n加上就好了。

创建learning_logs成功后打开其中的models.py

#learing_logs下的models.pyfrom django.db import models
# Create your models here.
class Topic(models.Model):"""用户学习的主题"""text=models.CharField(max_length=200)#max_length:设置主题名的长度date_added=models.DateTimeField(auto_now_add=True)#True的作用:每当创建新的主题时自动设置当前的日期和时间def __str__(self):"""返回模型的字符串表示"""return self.textclass Entry(models.Model):"""学到的有关某个主题的具体知识"""topic=models.ForeignKey(Topic,on_delete=models.CASCADE)#书中原码没有on_delete=models.CASCADE,但是Django2.X需要这个,否则会报错text=models.TextField()date_added=models.DateTimeField(auto_now_add=True)class Meta:verbose_name_plural='entries'def __str__(self):"""返回模型的字符串表示"""return self.text[:50]+"..."

激活这个模型

编辑setting.py文件

#/learning_log/learning_log下的setting.py
"""
Django settings for learning_log project.Generated by 'django-admin startproject' using Django 2.2.3.For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""import os# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'raeaahi)wo(*d99e+a!dfc+p5qbnt#ew9*r_k(hmbj$vhc!6$x'# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = TrueALLOWED_HOSTS = []# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',
#在这里添加下面两行#我的应用程序'learing_logs',
]MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]ROOT_URLCONF = 'learning_log.urls'TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]WSGI_APPLICATION = 'learning_log.wsgi.application'# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databasesDATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
}# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},
]# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/LANGUAGE_CODE = 'en-us'TIME_ZONE = 'UTC'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/STATIC_URL = '/static/'

修改数据库,存储迁移自己定义的模型
记住,每次定义了新的模型后都要做这一步

#在cmd中输入
python manage.py makemigrations learing_logs
python manage.py migrate

获取超级用户权限

python manage.py createsuperuser

这里面的username随意填一个就好,邮箱可以不填,密码要填且自己要记住,后面登陆时会用到。

模型的注册

打开admin.py

#learing_logs下的admin.py
from django.contrib import admin# Register your models here.
from learing_logs.models import Topic,Entry
admin.site.register(Topic)
admin.site.register(Entry)

这个时候运行项目,还是python manage.py runserver
打开localhost:8000/admin
点击add添加Topic和Entries的内容(随意就好)
记得要save哦
在这里插入图片描述

最后,创建主页,映射和其他网页

快完成了有点小激动,不多废话直接上代码

#/learning_log/learning_log下的urls.py"""learning_log URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.2/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.conf.urls import include,urlurlpatterns = [path('admin/', admin.site.urls),path(r'',include(('learing_logs.urls','learing_logs'), namespace='learing_logs')),"""这里书上用的都是url(),但是Django2.X开始都用path()代替了,还有include()里面的参数问题,一开始就是这里出错,纠结了好一会看了相关的文档才解决,目前上面这个代码是正确的"""
]

在learing_logs下新建一个urls.py文件

#learing_logs下的urls.py"""定义learing_logs的url模式"""
from django.conf.urls import url
from . import views
from django.urls import path,re_pathapp_name='learing_logs'urlpatterns=[
"""下面用#的都是path()的代码,但是不知道为什么有的运行会出错,
特别是topic_id匹配那一块,一开始匹配不到,后来试了很多最后才成功,
没注释的代码我运行是成功的,如果不成功可以试试更换一下注释的代码。
至于为什么url跳转的时候匹配错误我也没搞清楚,尴尬了"""#主页url(r'^$',views.index,name='index'),#path('',views.index,name='index'),#特定主题的详情页面#re_path('topics/(?P<topic_id>\d+)/',views.topic,name='topic'),url(r'^topics/(?P<topic_id>\d+)/$',views.topic,name='topic'),#path('topics/(?P<topic_id>\d+)/', views.topic, name='topic'),#显示所有主题url(r'^topics/$',views.topics,name='topics'),#path('topics',views.topics,name='topics'), 
]

编写视图views.py

#learing_logs下的views.pyfrom django.shortcuts import render
from .models import Topic
# Create your views here.
def index(request):"""学习笔记的主页"""return render(request,'learing_logs/index.html')def topics(request):"""显示所有主题"""topics=Topic.objects.order_by('date_added')context={'topics':topics}return render(request,'learing_logs/topics.html',context)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,'learing_logs/topic.html',context)

最后就是各种模板html文件了
在learing_logs下新建templates文件夹,再在里面新建learing_logs文件夹保存各种html文件,一共有四个分别是base.html,index.html,topic.html和topics.html
在这里插入图片描述
下面是html文件的代码
index.html


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

base.html

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

topic.html

{% extends 'learing_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 %}

topics.html

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

全部保存后直接python manage.py runserver启动服务
打开网页localhost:8000/topics,就可以看到之前一开始我的成果图了
点击Learning_Log可以跳转到首页(localhost:8000)
在这里插入图片描述

4.结束

写完这个又要回Ubuntu上面搭建digits了。就像我说的,希望每天可以强一点点,忙碌起来才能忘掉很多烦恼,也希望作为程序猿的大家也可以慢慢实现自己的梦想,作为一个七年的虎扑JR我就希望工作后能早点到达街薪。如果你在搭建的时候遇到什么问题的话可以评论留言,我看到会及时回复的。同时也希望能有机器学习,深度学习,数据分析这方面的大佬能指导一下我,该怎么学才能最好的去适应市场需求,能少走点弯路。当然考研还是第一步,没有研究生文凭感觉在人工智能方面面试会被直接刷掉,现实还是很残忍,无奈脸。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_770012.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cisco网站学习资源更新

这阵子收到很多Cisco的mail&#xff0c;最近整理了下&#xff0c;发觉Cisco也开始像Microsoft学习了&#xff0c;在提高自己提供的免费学习资料的含金量&#xff0c;更新增了视频培训课程&#xff0c;叫思科技术达人秀类似Microsoft的Technet视频广播。以下内容&#xff0c;均通…

团队-爬虫电影网站-最终程序

托管平台地址:https://gitee.com/w789369/PaChong/tree/master 小组名称:简单 小组成员合照:无 程序运行方法:python 程序运行示例及运行结果:转载于:https://www.cnblogs.com/lws1111/p/7944180.html

企业网站SEO的日常工作小记

各位看官&#xff0c;春节好&#xff0c;拜个晚年&#xff0c;祝各位SEOER晚年幸福&#xff0c;开个小玩笑&#xff0c;书归正传&#xff0c;春节假期回来&#xff0c;各位SEOER想必非常抓耳挠腮&#xff0c;排名较之之前有的小幅下滑&#xff0c;有的干脆挤出几页开外了。那么…

新站上线后应该做哪些有利于seo的工作

seo优化人员一定要重视基础工作&#xff0c;夯实基础会给后期网站优化工作带来很大便利&#xff0c;本篇文章主要是从实操视角审视一下企业网站上线后seoer应该做哪些工作&#xff0c;帮助网站更快获得排名和收录。1.填写网站标题和描述根据企业主提供的需要做的核心关键词来填…

使用LNMP架构部署动态网站环境。

&#xff08;1&#xff09;安装主机具备编译程序源码的环境&#xff0c;他需要具备C语言、C语言、Perl语言的编译器&#xff0c;以及各种常见的编译支持函数库程序。把安装LNMP动态网站部署架构所需的16个软件源码包和1个用于检查效果的论坛网站系统软件包上传到与本书配套的站…

SEO关键词优化:如何理解被百度快速索引?

经常会有SEO人员讨论&#xff0c;为什么我的SEO关键词总是不被快速索引&#xff0c;而实际上这里主要指的是&#xff0c;针对特定关键词的核心内容&#xff0c;那么&#xff0c;它主要涉及如下两个指标&#xff1a;索引快速收录这里值得说明的是&#xff1a;索引并不等于收录&a…

有病毒的u盘文件上传到服务器,还在被u盘病毒困扰?送你15个文件传输网站以及20+u盘工具...

哈喽大家好&#xff0c;我是无知便是罪&#xff0c;专注于收集和分享互联网上不为人知的好东西。今天让我们继续聊一聊文件传输&#xff0c;这要分为两类吧&#xff0c;一种是个人多设备之间的跨平台传输&#xff0c;就像手机与电脑之间&#xff0c;我们前面已经介绍过了。今天…

BAT架构师分享之:大型网站技术架构

2019独角兽企业重金招聘Python工程师标准>>> 早期的网站为了节省成本一般会设计成集中式系统&#xff0c;应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展&#xff0c;逐渐出现瓶颈&#xff0c;按一定原则**&#xff08;应用拆分、服务拆分、数据…

仿某某网站模板thinkphp_建网站一般多少钱?300足够了

网站&#xff0c;就相当于公司在互联网的上一个门面&#xff0c;所以其实不管什么行业&#xff0c;公司规模大小&#xff0c;个人建议还是都应该建一个属于自己公司的官网。再说&#xff0c;现在建一个网站真是非常的便宜&#xff0c;不像之前动辄上万&#xff0c;少则大几千&a…

php旅游管理系统,基于Laravel框架开发的旅游网站管理系统PHP源码

源码介绍旅游网站管理系统是一款基于Laravel框架开发的在线旅游网站系统&#xff0c;一个类似企业网站的张家界旅游网站&#xff0c;主要目标是为了实现对张家界的各个景点&#xff0c;文化艺术&#xff0c;当地生活的描述。同时实现可以登陆注册网站上订购门票和酒店&#xff…

anguler 画面布局适应屏幕大小_自适应与响应式网站设计特点是什么?有哪些优缺点?...

自从2007年第一代iPhone问世以来&#xff0c;移动设备在日常使用中变得更加方便。目前约有25亿人使用智能手机来完成日常活动&#xff0c;其中包括浏览网站。由于越来越多的用户更喜欢使用移动设备而不是更大的电脑&#xff0c;因此网页设计师们将大部分精力都放在了完善这类设…

linux虚拟主机网站,linux网站中虚拟主机的实现

一台linux中网站虚拟主机的完成主要有三种方式&#xff1a;a、根据ip地址&#xff1b;b、根据端口号&#xff1b;c、根据域名。一下为完成进程&#xff1a;(本试验的linux虚机系统为rhel5.6)1、基于域名的实现&#xff1a;这种方式需要搭建dns域名服务器。#cat/etc/sysconfig/n…

网站二级页面后总有html,二级网页打不开,详细教您浏览器二级页面打不开怎么解决...

很多电脑用户使用浏览器进行一些网页上的操作&#xff0c;不过有用户遇到了浏览器可以正常打开网站的主页&#xff0c;但是网站中的其他链接却打不开&#xff0c;咋回事&#xff1f;那么用户遇到二级网页打不开情况该怎么办&#xff1f;下面&#xff0c;小编跟大家介绍浏览器二…

Android程序员35岁之后还在招聘网站上投简历找工作丢人吗?

5.没啥明显长处&#xff0c;但做事踏踏实实&#xff0c;交给你的事情不会出漏子&#xff0c;和你工作过的人觉得和你搭档舒心。 6.虽然有个性&#xff0c;但也有创意&#xff0c;能做别人想不出来的好策划&#xff0c;好设计。 7.要么擅长娱乐酒席&#xff0c;要么擅长活动组…

文件服务器空间,网站文件服务器空间

网站文件服务器空间 内容精选换一换环境是基因容器服务所需要使用的计算资源的集合。基因容器的环境由云容器实例和云容器引擎提供。云容器实例云容器实例(Cloud Container Instance&#xff0c;CCI)服务提供 Serverless Container(无服务器容器)引擎&#xff0c;让您无需创建和…

java企业网站_企业实时Java

java企业网站当人们听到实时计算时&#xff0c;他们常常会误以为它们必须是快速系统&#xff0c;并且几乎总是用于控制机械系统。 的确&#xff0c;在大多数情况下&#xff0c;所需的响应时间很快&#xff0c;但是速度并不是定义实时系统的因素。 实时环境的真正核心是&#xf…

一步一步SharePoint 2007之六:改变一个网站的导航栏

摘要  上一篇文章中&#xff0c;我们讲到向网站中添加了一个子网站&#xff0c;但是子网站的在导航栏中位置却不是我们希望的位置&#xff0c;这让我们的女神计划受到了一定的阻碍&#xff0c;那么&#xff0c;我们有没有办法改变她在导航栏中的位置呢&#xff1f;  本篇文…

如何利用反向代理提高网站性能

1.什么是正向代理和正向代理服务器&#xff1f; 正向代理就是通常所说的代理&#xff0c;是某台电脑通过一台服务器来上Internet网的这种方式&#xff0c;其中这台电脑就叫客户机&#xff0c;这台服务器就叫正向代理服务器也就是通常所说的代理服务器。在这种方式中&#xff0c…

网站建设流程

第一步: 客户提出建站申请有意向 1:客户提出网站建设基本要求&#xff0c;我们进行需求分析&#xff1b; 2:客户提供相关文件及图片资料。 A:公司介绍 B:项目描述 C:网站基本功能需求 D:基本设计要求 第二步:制定网站建设方案 1.双方就网站建设内容进行协商&#xff0c;修改、补…

ASP.NET的SEO: 服务器控件背后——SEO友好的Html和JavaScript

本系列目录 假设你需要从一个页面转向其他页面&#xff0c;下面有很多种方式&#xff0c;你是如何选择的呢&#xff1f;你能清晰的说明理由么&#xff1f;<%--链接的表现形式--%><asp:HyperLink ID"HyperLink1"runat"server"NavigateUrl"~/…