Django

一、ubuntu下安装

1、虚拟环境安装:参考:http://linux265.com/news/3453.html
2、正常安装:参考:https://www.cnblogs.com/freeweb/p/5210167.html

二、基本命令

1、创建django项目:django-admin.py startproject django项目名
创建django应用:python3 manage.py startapp 应用名

2、本地运行项目:python3 manage.py runserver
校验项目完整性:check
进入python shell环境:python3 manage.py shell
执行用例测试:test

3、数据库相关:
创建模型变更的迁移文件:python3 manage.py makemigrations
执行上一个命令创建的迁移文件:python3 manage.py migrate
数据库数据导出到文件:dumpdata
文件数据导入数据库:loaddata

三、安装前的弯路相关

由于在本机下过Pycharm,所以决定用Pycharm远程操作虚拟机django项目。
1、File|Settings|Project:untitled|Project interpreter|右上角设置小按钮|Add|SSH Interpreter|输入相关,Next|失败,提示:SSH_MSG_DISCONNECT 2 Too many authentication failures。原因:ubuntu默认不开启root登录。
→修改/etc/ssh/sshd_config文件,设置PermitRootLogin为yes。
在这里插入图片描述
prohibit-passwd代表:允许root登录,但禁止root用密码登录。
2、重启:

//在 Ubuntu、Debian 和 Linux Mint 上:
# sudo service ssh restart
//在 Fedora、CentOS、RHEL 7上:
# sudo systemctl restart sshd

3、Interpreter:linux服务器的python路径。
Sync folders:django项目在linux服务器的存储路径。

四、windows Pycharm连接linux django

全网有pycharm连接linux已部署django的教程少得可怜。:)
一开始一脸懵逼,后来发现全部装成了pure python的连接。而且到后面的步骤发现不知道各步骤这么做的目的是什么。被各路教程打得懵逼。:)

参考:https://blog.csdn.net/ouyangzhenxin/article/details/81125000
https://blog.csdn.net/qq_35106189/article/details/83378136

1、建立新项目——点击Django——输入本地的项目路径,准备远程的连接。
在这里插入图片描述
在这里插入图片描述
2、输入虚拟机ip、用户名、密码。
在这里插入图片描述
在这里插入图片描述
Next后可能出现SSH_MSG_DISCONNECT 2 Too many authentication failures的情况,按三、操作即可。

3、输入linux服务器上的python路径。建议用python3。点击Finish。
在这里插入图片描述
回到New Project页面。可以看到建立远程连接。选择linux上已经部署好的django项目路径。
在这里插入图片描述
两个项目名要一样。
More Settings里不用更改,直接保持默认就可以。点击创建。出现下图:
在这里插入图片描述
原因还在探索中。不过此处直接点OK不理就可以。

4、同步:从linux端下载文件至本地。
在这里插入图片描述
在这里插入图片描述
可以打开三角箭头,看到相关文件:
在这里插入图片描述
settings.py:项目配置文件
urls.py:项目路由配置文件
wsgi.py:网关接口
manage.py:主程序;项目管理文件
Templates:静态资源

打开settings文件,更改ALLOWED_HOSTS=['*']
在这里插入图片描述
5、配置运行
①配置Django server
点击右上方Add Configuration(之前pycharm里没有别的项目就是Add Configuration,有的话点击下拉菜单的Edit Configuration)
在这里插入图片描述
点击左上角+号,在弹出的菜单里选Django server。
在这里插入图片描述
在这里插入图片描述
对Django server进行配置:
在这里插入图片描述
增加变量:DJANGO_SETTINGS_MODULE=项目名.settings
在这里插入图片描述
在这里插入图片描述
点击OK返回。远程编译器一般已经默认选好。
在这里插入图片描述
②配置python:点击左边的Templates,点击弹出菜单的python。默认已经配置好。点击OK。
在这里插入图片描述
③配置pycharm的Settings:
Pycharm左上角File——Settings——Language&Frameworks——Django
在这里插入图片描述
点击OK。

6、运行:点击右上方绿色三角。

在这里插入图片描述
如下图显示即为成功。
在这里插入图片描述
linux上:
在这里插入图片描述
windows上:
在这里插入图片描述
【FIN】

五、

1、django项目:web应用。django应用:可重用的python软件包。
每个应用可以自行管理模型、视图、模板、路由、静态文件等。
每个项目可含一组配置+多个应用。
2、
views.py:视图
models.py:应用模型
admin.py:定义Admin对象管理模块
apps.py:应用
tests.py:编写应用测试用例
urls.py:自行管理应用路由

3、视图:编写函数逻辑,实现html表达内容的生成、返回。

#app20190331 views.py
from django.http import HttpResponse
def hello(request):
	return HttpResponse("Welcome!")

路由:请求无法到达视图函数,路由配置可绑定视图函数和url,使呈现。
→先配置应用路由,再配置项目路由。

#app20190331 urls.py
from django.urls import path,include
import app20190331.views #引入视图文件
urlpatterns=[
	path('hello',app20190331.views.hello)
	#'hello是域名的分支!可以自己随便起的。访问的时候即http://xxx:8000/app20190331/hello
]
#django0330 urls.py
from django.contrib import admin
from django.urls import path,include
from django.conf.urls import *
from app20190331 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('app20190331/',include('app20190331.urls'))
]

添加应用至配置文件settings:

#django0330 settings.py
#在INSTALLED_APPS数组里添加:
'app20190331.apps.Apps20190331Config'

添加的东西与app20190331的apps.py文件有关。是创建应用时自动初始化的文件。
在这里插入图片描述
之后运行。注意网址。
在这里插入图片描述

六、模型层

视图与数据库间的组件。实现python对象与数据库表的转换。
1、相关配置:打开django0330的settings.py文件:
在这里插入图片描述
2、定义字段:
数字类型:IntegerField
文本类型:TextField
日期类型:DateTimeField
自增ID:AutoField
主键定义:primary_key属性

定义后要进行模型的迁移,从而将定义保存至数据库:
makemigrations:模型的变更生成迁移文件。
migrate:运行迁移文件,将文件内容同步至数据库。
在这里插入图片描述

七、Django Shell

Python Shell:交互式编程。Django Shell:继承Django项目环境。
方便临时操作、小范围debug、小范围调试。

八、Django Admin

自己生成的后台管理工具,读取定义的模型元数据,供开发者管理模型、数据。
认证用户、显示管理模型、校验输入。
1、django初始化时默认无管理员用户,需自行创建。
创建超级用户:python3 manage.py createsuperuser

2、查看之前写的博客:将博客模型注册进admin.py文件中。

#app20190331 admin.py
from .model import Article
admin.site.register(Article)

保存,项目自动重新运行。在页面里刷新,可见之前创建的Article。
在这里插入图片描述
此时文章默认显示Article object。想要让文章显示title:在models.py进行配置:

#app20190331 models.py
class Article(models.Model):
	...
	def __str__(self):
		return self.title

保存,重新runserver。刷新。title已显示。

九、模板系统

视图文件不适合编写html文件。模板系统是文件,分离文档的表现形式和内容。定义了标签占位符。
1、基本语法:
变量标签:{{变量}}
for循环:{% for x in list %},{% endfor %}
if-else标签:{% if %},{ %else% },{% endif% }

2、相关问题
在项目目录下创建templates/blog/index.html,借助模板语法编写首页。之后在view.py中定义函数:
在这里插入图片描述
在url.py中配置,加上:
path('index',app20190331.views.get_index_page)
注意函数后面去掉括号!否则爽歪歪:
在这里插入图片描述
在这里插入图片描述
之后runserver,输入的网址是:
http:xxxx:8000/应用名/index而不是blog/index。
否则会出现:
在这里插入图片描述
由于之前已经用shell创建过Article对象并存储过数据,所以本以为打开的时候是会有文章显示出来的,结果:
在这里插入图片描述
除了标题其余空白,没显示出来。
在网上也找不到。
于是楼主想到用shell打印一下值试试,看看是不是存上了。结果:
在这里插入图片描述
不甘心的继续试:
在这里插入图片描述
看样子是没存上。如果存上了,上图第一个语句的结果会是:
<QuerySet [<Article:xxx>,<Article:xxx>,...]>
猜测原因是由于连接的是虚拟机,每次用Pycharm重新连接虚拟机的ip都变化,而之前创建并存储了Article对象和之后使用模板不是连着一起进行的,中间pi变了经历过改ip重新连接,从而影响了数据库??【迷茫】

django数据库的基本查询:
get:查询单一结果,如果不存在抛出模型类.DoesNotExist异常。模型类.objects.get(属性='xxx')
all:查询所有结果。模型类.objects.all()
count:查询结果数量。模型类.objects.count()
楼主用以上命令尝试:
在这里插入图片描述
好吧看来是真没存上或者存在了我找不到路径的位置上。

注:关于端口被占用:
在这里插入图片描述
查询端口:netstat -tunlp|grep 端口号lsof -i:端口号
结束进程:kill -s 9 [PID]
在这里插入图片描述
关于kill与kill-9:参考https://unix.stackexchange.com/questions/8916/when-should-i-not-kill-9-a-process

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值