Initializing a django project

Initializing a project

  1. install conda env for this project conda create --name mydjangoenv python=3.8

  2. Activate conda env and Install Django pip install django

  3. using django-admin startproject withme . to create the project in the current directory

  4. Run server by using python manage.py runserver

  5. Create a pages directory using python manage.py startapp pages (in conda env)
    add app config definition in withme/setting.py

  6. Create a new directory named template, which has two directories and base.html, pages(other pages) and partials(the partials of base.html)
    In withme/setting.py, set the path of template: 'DIRS': [os.path.join(BASE_DIR, 'template')]

  7. Create a new directory named static in withme folder, which includes Static files (CSS, JavaScript, Images)
    In withme/setting.py, set the path of static,

    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATIC_URL = 'static/'
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'withme/static')
    ]
    
  8. run python manage.py collectstatic to create a static directory outside of withme folder, and add this folder to .gitignore

  9. In the first time, Add a page using 3 steps:

    1. In pages/views.py, write a view

      from django.http import HttpResponse
      def index(request):
          return HttpResponse("Hello")
      

      or render a page

      from django.shortcuts import render
      def index(request):
          return render(request, 'pages/index.html')
      
    2. Create a URLconf in pages/urls.py(need to add this file)

      from django.urls import path
      from . import views
      
      urlpatterns = [
          path('', views.index, name='index')
      ]
      
    3. Point the root URLconf at the pages.urls module. In withme/urls.py

      from django.contrib import admin
      from django.urls import path, include # add include
      
      urlpatterns = [
          path('', include('pages.urls')), # add a url to urlpatterns
          path('admin/', admin.site.urls),
      ]
      

Create a new app (posts)

  1. In template, create a folder called posts, which includes 3 files, 'post' 'posts' 'search'

    • Each file using this code to init

      {% extends 'base.html' %}
      
      {% block content %}
      <h1>listings</h1>
      {% endblock %}
      
  2. python manage.py startapp posts tp create a new app posts

  3. add app config in withme/settings.py

    # Application definition
    INSTALLED_APPS = [
        'pages.apps.PagesConfig',
        'posts.apps.PostsConfig',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    
  4. In withme/urls.py, Add a URL to urlpatterns path('posts/', include('posts.urls')),

  5. Create a url.py file in post app, copy the code in pages/urls.py

Database setup

  1. install postgreSQL16 and pgadmin4

  2. open terminal: type in this

    postgres=# \password postgres
    Enter new password for user "postgres":
    Enter it again:
    postgres=# CREATE DATABASE withme OWNER postgres;
    CREATE DATABASE

  3. create a server in pgadmin, and in withme database, set some infos

  4. pip install psycopg2
    pip install psycopg2-binary

  5. change data setting in withme/settings.py

    from

    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': BASE_DIR / 'db.sqlite3',
    }
    }

to

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'withme',
        'USER': 'postgres',
        'PASSWORD': '123456',
        'HOST': 'localhost'
    }
}
  1. pip install Pillow

  2. Design database

  3. pythpm manage.py makemigrations

  4. python manage.py migrate

  5. refresh servers in pgadmin, and check if they create table

Design database

  1. design schemas
  2. write models in (ex.) listings/models.py
  3. If you add foreignKey, you need to import other model

Create superuser

  1. go to localhost:8000/admin/

  2. python manage.py createsuperuser to create a super user called administrator and password is 123456

Register models with admin

  1. register models in listings/admin.py

  2. reload django administration page, you can see there is a listings model

Media folder

  1. add Media folder setting, just like static folder setting we did before

  2. add url to urlpatterns

in localhost/admin, add some realtors and listings, the image that have been uploaded will display inside media folder(auto-create)

Custom the admin page

go to template, create admin/base_site.html, and then custom

if you want to custom the data display, like not just show title(name) instead of other field, goto listings/admin.py

Pull data from listing model

listings/views.py

import models

相关推荐
工业互联网专业3 分钟前
Python毕业设计选题:基于python的酒店推荐系统_django+hadoop
hadoop·python·django·vue·毕业设计·源码·课程设计
任小永的博客9 分钟前
VUE3+django接口自动化部署平台部署说明文档(使用说明,需要私信)
后端·python·django
凡人的AI工具箱11 分钟前
每天40分玩转Django:Django类视图
数据库·人工智能·后端·python·django·sqlite
余生H15 分钟前
前端Python应用指南(三)Django vs Flask:哪种框架适合构建你的下一个Web应用?
前端·python·django
知识的宝藏15 分钟前
Django models中的增删改查与MySQL SQL的对应关系
sql·mysql·django·django models
凡人的AI工具箱21 分钟前
每天40分玩转Django:实操图片分享社区
数据库·人工智能·后端·python·django
小军军军军军军25 分钟前
MLU运行Stable Diffusion WebUI Forge【flux】
人工智能·python·语言模型·stable diffusion
数据小小爬虫33 分钟前
Python爬虫获取AliExpress商品详情
开发语言·爬虫·python
小爬虫程序猿34 分钟前
利用Python爬虫速卖通按关键字搜索AliExpress商品
开发语言·爬虫·python
Eiceblue1 小时前
使用Python获取PDF文本和图片的精确位置
开发语言·python·pdf