Use only some parts of Django?

后端 未结 8 1814
北海茫月
北海茫月 2020-11-28 02:39

I like Django, but for a particular application I would like to use only parts of it, but I\'m not familiar enough with how Django works on the inside, so maybe someone can

相关标签:
8条回答
  • 2020-11-28 03:07

    I myself use Django for its object/db mapping without using its urlconfigs. Simply create a file called djangosettings.py and insert the necessary configuration, for example:

    DATABASE_ENGINE   = 'oracle'
    DATABASE_HOST     = 'localhost'
    DATABASE_NAME     = 'ORCL'
    DATABASE_USER     = 'scott' 
    DATABASE_PASSWORD = 'tiger'
    

    Then in your regular Python code, do

    import os
    os.environ["DJANGO_SETTINGS_MODULE"] = "djangosettings"
    

    before you import any Django modules. This will let you use Django's object/db mappings without actually having a Django project, so you can use it for standalone scripts or other web applications or whatever you want.

    As for caching, if you don't want to use Django then you should probably decide what you are using and go from there. I recommend using CherryPy, which doesn't use Django-style regular expression URL mapping, but instead automatically maps URLs to functions based on the function names. There's an example right at the top of the CherryPy home page: http://cherrypy.org/

    CherryPy has its own caching system, so you can accomplish exactly the same thing as what Django does but without needing to use Django's urlconfig system.

    0 讨论(0)
  • 2020-11-28 03:07

    I've created a template Django project that allows you to do just that.

    https://github.com/dancaron/Django-ORM

    Just follow the instructions and you can write standalone python files that utilize Django's database functionality, without having to use urlconf, views, etc.

    0 讨论(0)
  • 2020-11-28 03:07

    I've shared an example of solution, which prevents Python Path manipulation inside code:

    https://github.com/askalyuk/django-orm-standalone

    It contains a standalone data access package, a separated simple Django site and a unit test.

    0 讨论(0)
  • 2020-11-28 03:12

    In order to use Django's models and database abstraction I explain a clean way to use them outside of Django here: https://stackoverflow.com/a/49515366/2682613

    Django version 2.0.2

    0 讨论(0)
  • 2020-11-28 03:12

    I found KeyboardInterrupt's answer but it was answered in 2009 and I failed to run it in Django 1.8.For recent Django 1.8, You can have a look at this, in which some parts come from KeyboardInterrupt's answer.

    The folder structure is:

    .
    ├── myApp
    │   ├── __init__.py
    │   └── models.py
    └── my_manage.py
    

    myApp is a module, contains an empty __init__.py and models.py.

    There is an example model class in models.py: from django.db import models

    class MyModel(models.Model):
         field = models.CharField(max_length=255)
    

    my_manage.py contains django database, installed_app settings and acts as django offical manage.py, so you can:

    python my_manage.py sql myApp
    python my_manage.py migrate
    ......
    

    The codes in my_manage.py are: from django.conf import settings

    db_conf = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'your_database_name',
            'USER': 'your_user_name',
            'PASSWORD': 'your_password',
            'HOST': 'your_mysql_server_host',
            'PORT': 'your_mysql_server_port',
        }
    }
    
    settings.configure(
        DATABASES = db_conf,
        INSTALLED_APPS     = ( "myApp", )
    )
    
    # Calling django.setup() is required for “standalone” Django u usage
    # https://docs.djangoproject.com/en/1.8/topics/settings/#calling-django-setup-is-required-for-standalone-django-usage
    import django
    django.setup()
    
    if __name__ == '__main__':
        import sys
        from django.core.management import execute_from_command_line
    
        execute_from_command_line(sys.argv)
    
    0 讨论(0)
  • 2020-11-28 03:17

    Django, being a web framework, is extremely efficient at creating websites. However, it's also equally well-suited to tackling problems off the web. This is the loose coupling that the project prides itself on. Nothing stops you from installing a complete version of Django, and just using what you need. As a rule, very few components of Django make broad assumptions about their usage.

    Specifically:

    • Django models don't know anything about HTML or HTTP.
    • Templates don't know anything about HTML or HTTP.
    • The cache system can be used to store anything that can be pickled.

    One of the main things you'll face when trying to use Django without a web server is setting up the environment properly. The ORM and cache system still need to be configured in settings.py. There are docs on using django without a settings module that you may find useful.

    0 讨论(0)
提交回复
热议问题