Coder Social home page Coder Social logo

edwardzxje / django-poll-application Goto Github PK

View Code? Open in Web Editor NEW

This project forked from hoangsonww/django-poll-application

1.0 1.0 0.0 807 KB

๐Ÿ—ณ๏ธ Welcome to the Django Polls App: Your interactive poll creation and voting platform! Craft custom polls, gather opinions, and visualize results with our user-friendly Django app. Experience the power of polls on the web right now! ๐Ÿš€

Home Page: https://hoangsonww.github.io/Django-Poll-Application/

License: MIT License

Python 49.52% CSS 4.14% HTML 46.35%

django-poll-application's Introduction

The Django Poll Application

This repository hosts a poll application that was built with Django, designed to showcase fundamental Django concepts like models, views, templates, and the admin interface.

Table of Contents

User Interface

Homepage

User Interface 1

Poll Details

User Interface 2

Poll Results

User Interface 3

Admin Interface

User Interface 4

Features

  • Create Polls: Admin users can easily create questions and add multiple answer choices.
  • Vote: Users can view available polls and vote for their preferred choices.
  • Results: Real-time results are displayed after voting, showing the distribution of votes.
  • Admin Dashboard: A robust admin interface allows for managing questions, choices, and viewing results.
  • Correct Answers: Admin users can specify correct answers for each question, and users see if they voted correctly on the results page.
  • Homepage and Navigation: Clear navigation between the homepage (list of polls), poll details, and results.
  • Basic Styling: Includes basic CSS styles for a clean and visually appealing presentation.

Technologies Used

  • Django: Web framework for rapid development.
  • Python: The programming language used for the backend logic.
  • HTML/CSS: For structuring and styling the user interface.
  • JavaScript (Optional): Used for adding interactivity (e.g., Chart.js in your results.html).

Installation

  1. Clone the Repository: Clone the repository using the Code button in the repository's main GitHub page.

  2. Create a Virtual Environment:

    python -m venv .venv
  3. Activate the Virtual Environment:

    source .venv/bin/activate  # Linux/macOS
    .\venv\Scripts\activate    # Windows
  4. Run Migrations:

    python manage.py makemigrations
    python manage.py migrate
  5. Create Admin User:

    python manage.py createsuperuser
  6. Start the Server:

    python manage.py runserver

Important: Remember to change the Django production secret key and set DEBUG to True in PollApplication/settings.py order to run the server:

SECRET_KEY = 'your_secret_key'

DEBUG = True

Also, as you develop the app, every time you make changes to the data in the back end, be sure that you migrate them to the SQLite database using the following commands:

python manage.py makemigrations
python manage.py migrate

Then start the server again and you'll be all set!

Usage

  1. Access the Admin Interface: Go to http://127.0.0.1:8000/admin/ and log in with your superuser credentials.
  2. Create Polls:
    • Click "Polls" or "Questions" in the admin interface.
    • Click "Add Question" and fill out the question text and publication date.
    • Click "Save and continue editing" to add answer choices.
    • Mark the correct answer using the checkbox.
  3. View Polls: Visit the homepage (http://127.0.0.1:8000/polls/) to see the list of available polls.
  4. Vote: Click on a poll to view details and select your answer.
  5. View Results: After voting, you'll be redirected to the results page, where you can see the vote distribution and whether you answered correctly.

Project Structure

  • polls/:
    • models.py: Defines the Question and Choice models.
    • views.py: Contains the views for displaying polls, voting, and showing results.
    • admin.py: Customizes the Django admin for poll management.
    • urls.py: Defines the URL patterns for the poll app.
    • tests.py: Contains test cases for the app.
    • __init__.py: Makes the directory a Python package.
    • apps.py: Configuration for the app.
    • templates/polls/: Contains the HTML templates for the app's views.
      • index.html: Homepage with a list of polls.
      • detail.html: Poll details and voting form.
      • results.html: Poll results with vote distribution.
    • static/: (Optional) Stores static files like CSS for styling.
      • images/: Contains images used in the app.
      • polls/style.css: CSS file for styling the app.
    • migrations/: Contains database migration files.
  • PollApplication/:
    • settings.py: Contains the project settings and configurations.
    • urls.py: Defines the URL patterns for the entire project.
    • wsgi.py: WSGI configuration for deployment.
    • asgi.py: ASGI configuration for deployment.
    • __init__.py: Makes the directory a Python package.
  • db.sqlite3: The default SQLite database file.
  • manage.py: A command-line utility for interacting with the project.

Customization

  • Templates: Modify the HTML templates (index.html, detail.html, results.html) to customize the look and feel of the poll pages.
  • Styling: Add more CSS rules to style.css or create new stylesheets for further customization.
  • Functionality: Extend the models or views to add more features like user authentication, poll comments, or social media sharing.

REST API Usage

This app also includes a REST API built with Django REST Framework (DRF). Here are the available endpoints:

Endpoint Methods Description Authentication Required
/api/questions/ GET, POST, PUT, DELETE List/create/update/delete questions. โœ…
/api/questions/<id>/ GET, PUT, DELETE Retrieve/update/delete a specific question. โœ…
/api/choices/ GET, POST, PUT, DELETE List/create/update/delete choices. โœ…
/api/choices/<id>/ GET, PUT, DELETE Retrieve/update/delete a specific choice. โœ…

Example Usage (with curl):

# Get all questions
curl http://127.0.0.1:8000/api/questions/

# Get a specific question
curl http://127.0.0.1:8000/api/questions/1/

For example, if you run curl http://127.0.0.1:8000/api/questions/, you will get this output:

[{"id":3,"question_text":"huhu","pub_date":"2024-06-10T07:21:01Z"},{"id":4,"question_text":"hehehehe","pub_date":"2024-06-11T15:01:59Z"},{"id":5,"question_text":"What is the capital of France?","pub_date":"2024-06-11T15:11:04Z"}]

You can also directly visit the API endpoints in your browser:

API Interface

Authentication: To use POST, PUT, or DELETE methods, you'll need a valid token, typically obtained after user login. Include this token in the Authorization header:

curl -X POST -H "Authorization: Token <your_token>" -H "Content-Type: application/json" -d '{"question_text": "Is this a new question?", "pub_date": "2023-12-12T12:00:00Z"}' http://127.0.0.1:8000/api/questions/

Contributions

Contributions are welcome! Feel free to open issues or submit pull requests. Feel free to also fork and customize this repo to fit your needs.

License

This project is licensed under the MIT License.

Contact

If you have any questions about this project or Django (or even the Django REST Framework) in general, feel free to contact me! I'll be happy to answer any questions you might have (hopefully I'll know the answers to them...)


Thank you for visiting today!

django-poll-application's People

Contributors

hoangsonww avatar

Stargazers

Edward Ngg avatar

Watchers

Edward Ngg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.