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

相关推荐
不能放弃治疗12 分钟前
rule 和 skill
后端
ADIT15 分钟前
一、反射的定义与原理
后端
Csvn28 分钟前
Python 开发技巧:标准库深度挖掘
后端·python
山东点狮信息科技有限公司44 分钟前
SpringBoot+VUE3,一套系统完成OA+HRM+CRM+MES+合同+项目管理 —— 深度解析点狮全业务管理平台
java·spring boot·后端
li星野1 小时前
二分查找的三重变奏:有序区间、旋转最小值与平方根——从“猜数字”到“向量检索”的思维演化
python
爱勇宝1 小时前
《道德经》第4章,老子写得很像在描述一个“底层系统”。
前端·后端·程序员
神奇小汤圆1 小时前
Redis 哨兵搭建+ACL权限控制
后端
RSTJ_16251 小时前
PYTHON+AI LLM DAY ONE HUNDRED AND THREE
开发语言·人工智能·python
简~7682 小时前
python openpyxl处理Excel成绩表自动统计
python·大学生