Skip to main content

A django application which can be used as a base for questionnaire functionality

Project description

django-questionnaire-core

A django application which can be used as a base / starting point for questionnaire functionality in your project. It heavily relies on django form fields & widgets and uses JSON fields to store the results.

Requirements

Quick start

  1. Add "questionnaire_core" and its dependency to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
        ...
        'ordered_model',
        'questionnaire_core',
    ]
    
  2. Create a view based on questionnaire_core.views.generic.QuestionnaireFormView; a simple version might look like this:

    from django.http import HttpResponseRedirect
    from django.urls import reverse
    from django.utils.http import urlencode
    
    from questionnaire_core.models import Questionnaire, QuestionnaireResult
    from questionnaire_core.views.generic import QuestionnaireFormView
    
    class BasicQuestionnaireView(QuestionnaireFormView):
        template_name = 'basic_questionnaire.html'
    
        def get_questionnaire(self):
            return Questionnaire.objects.get(pk=self.kwargs.get('pk'))
    
        def get_questionnaire_result_set(self):
            if self.request.GET.get('result_set'):
                return QuestionnaireResult.objects.get(pk=self.request.GET.get('result_set'))
            return QuestionnaireResult(questionnaire=self.get_questionnaire())
    
        def get_success_url(self):
            return reverse('basic_questionnaire', args=(self.kwargs.get('pk'),))
    
        def form_valid(self, form):
            # Add current result set to the url (allows editing of the result)
            redirect = super().form_valid(form)
            url_params = urlencode({'result_set': form.current_result_set.pk})
            return HttpResponseRedirect('{url}?{params}'.format(url=redirect.url, params=url_params))
    
  3. Add the new view to your URLconf:

    path('questionnaire/<int:pk>/', BasicQuestionnaireView.as_view(), name='basic_questionnaire'),
    
  4. Run python manage.py migrate to create the questionnaire_core models.

  5. Start the development server and visit http://127.0.0.1:8000/admin/ to create a questionnaire (you'll need the Admin app enabled).

  6. Visit http://127.0.0.1:8000/questionnaire/1/ to test your first questionnaire.

Development setup

  1. Upgrade packaging tools:

    python -m pip install --upgrade pip
    python -m pip install --upgrade setuptools wheel
    
  2. Install Django (the example_app expects django 3.2):

    python -m pip install Django~=3.2.0 django-ordered-model psycopg2
    
  3. Install tox, isort & flake8

    python -m pip install tox isort flake8
    

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-questionnaire-core-1.4.0.tar.gz (14.8 kB view details)

Uploaded Source

Built Distribution

django_questionnaire_core-1.4.0-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file django-questionnaire-core-1.4.0.tar.gz.

File metadata

File hashes

Hashes for django-questionnaire-core-1.4.0.tar.gz
Algorithm Hash digest
SHA256 dec082f784c713663255ee50508302e3433f5f78bfa4441080432f21ba012393
MD5 a8a8728663e5f9f19b0d6c945770f66a
BLAKE2b-256 b0da384183f9f0da9945219b840fe6673a0c49bb63523229d080659a21ff9d86

See more details on using hashes here.

File details

Details for the file django_questionnaire_core-1.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_questionnaire_core-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 532379c42b2287b14add1dbcde528327d7778b13646ff0b8102af8b2b8afaf10
MD5 33378407fc6004fbb9ee004cda324841
BLAKE2b-256 3b36a281c9c1c98bebebf761c5978421835e5d47d13f0083297a550d48400610

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page