Django实现一个网页

[网络中心VPN]

[Bash]

  • 启动:
    $ sudo systemctl restart nginx [issue]
    $uwsgi uwsgi.ini
    or
    $ sudo service nginx restart [issue]
    $uwsgi --reload uwsgi.pid

############ nginx log
gedit /var/log/nginx/error.log
sudo rm -f /var/log/nginx/*.log    # clear
############ nginx conf
sudo gedit /etc/nginx/sites-available/default    # setting
sudo gedit /etc/nginx/nginx.conf    #

[admin手册]

  • 修改密码
    项目根目录下,$python manage.py shell
from django.contrib.auth.models import User
user = User.objects.get(username='admin')
user.set_password('new_password') 
user.save()

[部署手册]

django + nginx + uwsgi
注:nginx监听端口需是打开的

[Documents]

[刘江教程]

本地启动:$python manage.py runserver 8080

  1. 请求与响应
    app:
    每一个应用(app)都是一个 Python 包。通常都将它们放在与manage.py脚本同级的目录下
    $python manage.py startapp myapp
  • 视图:
    1)myapp/views.py
    2)myapp/urls.py #为了调用该视图
    3)myproj/urls.py #主urls.py文件
    include语法相当于多级路由
  1. 模型与后端
    数据库配置 >> 定义model,... >> 启用模型(建表+建python数据库API)
    (每一个类都是django.db.models.Model的子类。每一个字段都是Field类的一个实例)
  • 修改模型三步:
    models.py中修改模型
    $python manage.py makemigrations webapp创建迁移记录文件
    $python manage.py migrate操作同步到数据库
    admin.py中注册,同步到管理后台

[Method]

  • method: 正则查找 [参考]

Problem: 通过后台页面上传到服务器的图片大小是任意的,现需将图片以固定大小显示在主页。已知读入字符串img如下:

img = "

"

Algorithm: { 字符串匹配,取得src值;根据src值,新建标签了;}

p = re.compile(r'src=".*?(.*?)"')
src = p.findall(img).pop()

[Issue]

  • issue: 启动Nginx出现Failed to start nginx.service:unit not found
    之前为修复服务器头文件披露的风险,将Ngnix卸载后并编译安装,因此Nginx启动方式变了。应该采用./nginx的方式运行服务。

  • issue: 标签未渲染 >> [添加"|safe"]
    {{ ele.body }}修改为{{ ele.body|safe }}的格式

  • issue: css资源404(部署管理员后台)[仅参考]
    [ 将本地css资源复制至项目内 ]
    在python shell中:
    >>> import django
    >>> django.__file__ '.../python3.8/site-packages/django/__init__.py'
    [ 通常'.../python3.8/site-packages/django/contrib/admin/static/' ]
    [ 通常'.../python3.8/site-packages/ckeditor/static/' ]
  • issue: Server端只有500,看不到错误信息 >> [打开Debug模式]
    修改配置文件,webproject/webproject/settings.py

  • issue: nginx重启失败
    >> [80端口占用,kill相关进程],$sudo netstat -tnlp | grep 80
    >> [nginx语法错误],$sudo nginx -t
    >> [换命令],$sudo service nginx restart

  • issue: 413
    nginx报错,查看nginx-log如下:
    [error] client intended to send too large body: 3667175 bytes,

    解决:
    1.打开nginx配置文件 nginx.conf, 路径一般是:/etc/nginx/nginx.conf。
    2.在http{}段中加入 client_max_body_size 20m; 20m为允许最大上传的大小。
    3.保存后重启nginx,问题解决。$sudo service nginx restart
  • issue: 304
    第二天刷新页面时,服务器出现304状态码。
  • issue: 403 Forbidden >> [资源没有权限]
    $chmod -R +r *
    nginx/error.log
    [error] open() "/.../js/jquery.js" failed (13: Permission denied)
  • issue: 500 Server Error >> [Django项目运行异常]
  • issue: 500 Server Error 只能查不能增删改 >> [alert] Nginx access.log failed (No space.) 删除日志并重启nginx.
  • issue: 502 >> [uwsgi配置错,修改ini文件]
    修改uwsgi.ini文件,运行,查看输出日志run.log,
    $uwsgi uwsgi.ini
    浏览器访问,查看nginx日志/var/log/nginx/error.log
  • issue: uWSGI安装失败 >> [gcc=4.8]
    参考[csdn]

[Future]

  • 主页展示多张合影
    主页考虑滚动切换效果,管理后台有管理照片入口
  • 新闻详情页优化布局

你可能感兴趣的:(Django实现一个网页)