Need advice about which tool to choose?Ask the StackShare community!
Django vs Vapor: What are the differences?
Introduction:
Here, we will discuss the key differences between Django and Vapor, two popular web development frameworks. Django is a high-level Python web framework that enables rapid development and clean design. Vapor, on the other hand, is a server-side Swift web framework used to build web applications. Let's explore the key differences between these two frameworks.
Architecture: Django follows the Model-View-Controller (MVC) architecture pattern, where the Model represents the data, the View handles the user interface, and the Controller manages the logic and flow. In contrast, Vapor adheres to the Model-View-Controller (MVC) architecture pattern, where the Model represents the data and logic, the View handles the user interface, and the Controller controls the flow and communication between the Model and View.
Language: Django is predominantly based on Python, a widely used programming language known for its simplicity and readability. In contrast, Vapor is based on Swift, a powerful and modern programming language initially developed by Apple for iOS, macOS, watchOS, and tvOS development. Swift offers advantages such as safety, speed, and expressiveness.
Ecosystem: Django has a well-established and extensive ecosystem, supported by a large community and numerous third-party packages. This results in a wide range of available libraries and tools, making development more efficient. On the other hand, Vapor has a relatively smaller ecosystem compared to Django. It is a younger framework with a growing community and a gradually expanding set of available packages.
Database Support: Django provides out-of-the-box support for a variety of databases, including popular options like PostgreSQL, MySQL, SQLite, and Oracle. It facilitates seamless database integration with its Object-Relational Mapping (ORM) layer, allowing developers to work with databases using Python objects. In contrast, Vapor primarily focuses on leveraging Swift's native support for SQL databases, with Fluent, a powerful and type-safe ORM. Although it provides support for popular databases like PostgreSQL and MySQL, the range of supported databases is comparatively smaller than Django.
Deployment: Django supports various deployment options, including traditional hosting providers and popular cloud platforms like Heroku, AWS, and Google Cloud. It offers flexibility in choosing the deployment environment based on specific requirements. Vapor, however, specializes in serverless deployment with serverless cloud providers like AWS Lambda, making it more suitable for serverless architectures and applications. This allows for cost-effective scaling and automatic management of server infrastructure.
Community and Adoption: Django has been around for many years and has a significantly larger community, resulting in extensive documentation, active forums, and readily available support. It is widely adopted by developers worldwide, making it easier to find resources and expertise. Vapor, being a relatively newer framework, has a smaller community and may have limited resources compared to Django, making the learning curve slightly steeper.
In summary, Django and Vapor differ in their architecture, programming language, ecosystem, database support, deployment options, and community/adoption. Django is based on Python, follows the MVC architecture, has a mature ecosystem, supports various databases, offers versatile deployment options, and has a large community. On the other hand, Vapor is based on Swift, follows the MVC architecture, has a growing ecosystem, primarily focuses on SQL databases, specializes in serverless deployment, and has a smaller community.
I need to build a system(web app) where people will share their projects and will receive funding against those projects if someone likes the projects. The backend should be secure, and the tools that will be needed to build that system should be free. We are a startup that can't invest too much in tools right now. We need to build it in 3-4 four months.
The application should be able to support 10k users for now and should be able to scale later.
Also, please suggest what front-end technologies I should use.
Depending on the backend I would pick the technology you feel most comfortable with, although, my preference would go to Django with Django REST Framework considering the timeframe you mentioned.
As for the front-end, React.JS and Vue are easy to get started with.
Looking for Advice! I am developing a hybrid app for video streaming, I have a prior experience with .NET Core and would like to use it for my back end but the latest buzz on characteristics of Node.js such as light weight, event loop and Async capabilities is really tempting me to reconsider my decision. On a quick research I could observe that a lot of Internet companies use either Python Django or Node JS for their back end which has thrown me into confusion, looking for an expert advice, thx.
If you want to create a reliable video streaming service, you'll probably want to go with a UDP approach. TCP will throw an exception as soon as a packet drops. That being said..... Node.js is ultimately a bad choice. Way too high-level. I've found, when working with UDP, it's much more performant on lower level languages like C, etc. As far as my recommendation, if you want to go with something 'new' and fun, check out GoLang. It's low level, and developed to handle high performance at scale.
That's depend on your experience if you are very well in C# you should start using the Technology that's you know and like it.
So none of these tools may be bad for your implementation of this streaming app. But one thing to consider is what are you trying to achieve. If your application is more front end facing with streaming to a backend service C# may be your better implementation path just due to its greater overall versatility in terms of options for mobile, backend development, front end development, service development, etc... However if your focused purely on the streaming aspects and utilizing Amazon or Azure services in conjunction with the language of choice, Python, Node.Js, Django or other technologies may offer a faster option to success. Another thing to consider is many of the streaming platforms today utilize services from cloud vendors to achieve their success more than simply the ingenuity on the part of their internal staff's programming skills. Traditional programming languages like Java, C++, C# are used less these days. Today most teams are piggybacking off these services where its possible to give your application the greatest ability to compete with the big boys. - Your Friendly Neighborhood Tech Manager
You could apparently go for both Node or Django but I would recommend choosing Node as you're building a video streaming app and the biggest video streaming service Netflix used Node in the production.
Take a look at FastAPI if you are going to choose Python
I am starting a new project to build a simple ERP system for small businesses, where the owners can also manage orders on their phones.
I have decided to use JavaScript & React on the front-end and MySQL for the database. But I am really struggling to pick a backend language. I'm familiar with Node.js, but when I search for ERP (CRM & order mgt) projects on Youtube, I see that most build with Python (Django). Many also recommend Java.
So I'm a little confused. Please advice.
There is no problem to keep using node.js for your backend. Keep in mind that you already have expertise in it, so you could focus on development instead of to learn a new syntax/framework. There are good libraries in node.js that could help you in the development (services, validations, integrations, etc) also keeps you with a single language to the whole system. Django, as far as I know, it will provide a solid base for you, but it could be too much for your purpose, also could be more complex than you could need. Java provides to you many frameworks to simplify your integrations also could achieve a good performance. Anyway, I recommend you to follow using node.js, since you already know the syntax/platform.
Django is best suited for your requirement and has a very good community base to reach out for any queries. I have myself built and seen a lot of stuffs which match your requirement.
Hello, Node.js is simply a better option than python if you wish to make your application real-time operations. Also Node.js is a better choice than python for server side development.
But let's get your problem now. For most ERP projects, Node.js is a better choice. Also, since you are already familiar with Node.js, continue with it. Personally, I think Node.js is way better than Django mainly because JS is the god of ERP projects. Java is a good counterpart though.
I personally suggest NodeJs as you are also familiar with it. Even nodeJS has its own strong frameworks such as NestJS, Loopback etc. And the community is pretty much strong though. If you are looking for a faster development , then always you can go for NodeJS. And its pretty fast though.
Will you build it from scratch? There are some open source ERP/CRM solutions that you can use as a base for your solution. SugarCrm is an example. By looking at those, you can then decide which language you'll use for the backend.
I can recommend you a flexible constructor for this purpose. To create a system, you only need sql, and you can connect to any database without any problems. Please see the introductory article about the features, and if you are interested, I can provide access to the test site. My contacts for communication are on the site page https://falconspace.site/docs/vvedenie-v-falcon-space--c-chego-nachat https://falconspace.site/for-it
Hey if you are allready familar with nodejs then just go with it. There are some very nice frameworks out there that can be hold with the big ones.
Examples: AdonisJS or SailsJS
AdonisJS is even very similar like django.
Go with Node.js and use a framework. I can recommend NestJS or Fastifiy as a Backend Framework. They both have a strong community and Fastify is the successor of Express but much faster.
I prefer to use Node.js because you have experainse in it and also you can do anything for this language.
I am looking to make a website builder web app, where users can publish built websites with a custom or subdomain (much like Wix, Weebly, Squarespace, etc.), and I was wondering about any advice on which web framework to build it on? I currently know Node.js, but I would be excited to learn Laravel or Django if those would be better options. Any advice would be much appreciated!
The tools you mentioned are all backend focused frameworks. I will say, you can choose one of them as you may prefer (maybe Laravel and Django will be better since it's more organized than Node.js). But no matter what, if you will create a website builder application, today you'll need a frontend framework like Vue.js, React or Angular - or maybe Ember.js, Svelte and Meteor.
If you use Nodejs, you should use one more frontend language like reactjs or angularjs. Laravel is the better option. They are more power for rendering.
Hi
I’ve been using Django for the last year on and off to do my backend API. I’m getting a bit frustrated with the Django REST framework with the setup of the serializers and Django for the lack of web sockets. I’m considering either Spring or .NET Core. I’m familiar with Kotlin and C# but I’ve not built any substantial projects with them. I like OOP, building a desktop app, web API, and also the potential to get a job in the future or building a tool at work to manage my documents, dashboard and processes point cloud data.
I’m familiar with c/cpp, TypeScript.
I would love your insights on where I should go.
Spring Boot is the lightweight of the Spring framework. I used the Spring framework before, and I fall in love with the Spring Boot. I also use .NET core, but still, I like Spring boot the best. If you have time then you should experience both. You are more than halfway in gaining experience. My suggestion is always to try to learn many things as you can.
I see what you're going through and I extend my hands to you. I felt the same frustration after almost 1.5 years of working with Django and Node.js in the parallel. And since the last one year, I've transitioned into Spring Boot. I think its fair to say, that its quite different when you're going from Django background as a framework, but otherwise. I think it's one of the robust ones out there. Scalability is seamless and you get most of the things out of the box or easily supported by dev dependencies. You should definitely check it out! :)
I am a graduate student working as a software engineer in a company. For my personal development, I want to learn web development. I have some experience in Springboot while I was in university. So I want to continue with spring-boot, but I heard about Django. I'm reaching out to the experts here to help me choose a future proof framework. Django or Spring Boot?
Thanks in Advance
Kamrul Hasan, Don't choose dying technologies with small communities. How many startups do you think use Spring and Django? Use Google Trends to compare technologies. Study the StackOverflow developer survey and job websites to see what technologies are wanted. Few teams can afford to train you to get up to their level so be a life-long learner. Embrace the dawn of a new industry and become an expert.
I recommend you stick to Java Spring as you already have experience with the technology, i suggest you master this technology and then if Django seam to be very interesting to you, django is a framework you can easily pickup as python is also easy, you have to probably be able to manage the context switching between a static typed language like Java to dynamic language like python
Hi Kamrul,
It really depends on the kind of project and whether you feel more comfortable with Java or Python. Both are excellent frameworks, with a huge community and learning material. I've been working with Spring Boot since I started coding almost and I can assure you it's the perfect combination for Java. The learning curve may be harder that Django, but once you know the basics you're good to go. I can't tell you much about Django but you must now by now that it has a great reputation with Python users. In any case I don't think you can go wrong with any of these two. My advice is, if you are already familiar with the Spring framework, give Spring Boot a try, because you're going to find out that it just makes the whole Spring experience so much easier. Let us know what you chose!
It depends on what you want. Spring is Java-based whereas Django is Python-based. The question rather is Java vs Python. I personally recommend Python as it's shorter and easy to learn. But Java has advantages in really big systems.
Both are in active development and had huge community support. It really depends on you what you are comfortable with. Both are married to their respective languages. I choose Python over Java because of its simplicity and readability. To develop in java you need to write a lot of code. That's how java is. The best part I love with Django is its synchronization with Databases.
Hi there, I'm deciding the technology to use in my project.
I need to build software that has:
- Login
- Register
- Main View (access to a user account, News, General Info, Business hours, software, and parts section).
- Account Preferences.
- Web Shop for Parts (Support, Download Sections, Ticket System).
The most critical functionality is a WebSocket that connects between a car that sends real-time data through serial communication, and a server performs diagnosis on the car and sends the results back to the user.
You can use NestJs with microservice architecture.where you can also use socket.io for web socket. you can use MongoDB (For real-time data) & MySQL for customer management.if you don't want to implement websocket.you can use firebase.it gives realtime database & firestore.which can handle millions of connections and scale it up.
I would also go with NestJS. I would say Java is unnecessarily complicated and limited. And Python is not typed. TypeScript is powerful and typed and goes well with NestJS, especially using RxJS.
Django does not enforce backend-frontend separation, which probably was a good thing back in the days, but not anymore. But on the other hand enforces the project structure to you, which I don't like.
Just a simple Node.JS app with templating engine for UI can be sufficient for what you want to achieve.
Spring boot with Spring Security[JWT], Websocket, Thymeleaf or Mustache, and styling with Bootstrap.
Currently, I am a university student, and it is my second last semester with a major in Computer science. I want to start my career in full-stack web development. I know Python with Django + PHP with Laravel, and my focus is on learning MERN stack. I am a little bit confused as to which technology I should choose: Django or Magento or MERN stack.
#newbie
I suggest you to go with MERN Stack (Mongo,express,react,Node). As you know python and django which is a plus point because you can use python and node as your backend and for front-end use react(easy to learn) and database of your choice.(Mongo or SQL)
As a medium level .Net programmer trying to implementing a website, I decided to go through the Asp.Net Core. I found some tutorials on the web and started learning; however, I faced a problem. Even though I have been working with .Net and C# (mostly with unity game engine, which led to a quite amazing mobile game, published on a Persian app store) for two years or even more, by start learning Asp.Net Core, I found out that I do not know .Net as much as I expected. There were some things I should have learned before.
I searched for other frameworks, and Django was a popular one. Besides, I have planned to learn Python for machine learning. The website I want to make (with a small team) is nearly similar to Khan Academy. (We are going to use React for front-end)
So, What should I do? Continue working on .Net core with its amazing new features, or start getting into the Python and Django?
Your advice accompanied by reasons will be greatly appreciated!
Having worked with many J2EE database applications in the past, I now turn to Django if I can and the project allows it as it is so quick to get up and running. It has a logical workflow and organized structure and it comes with a high level of security (if you import the appropriate backends). If you are wanting to incorporate python-based data processing (or cython), it is relatively easy to write a backend plugin. I have found it more stable with updates than other frameworks (particularly compared to the NPM world such as React which so often descends into dependency hell when a version of something is updated). One hassle worth mentioning is the database migrations support which can sometimes mess up during development but there are workarounds. With a React frontend, you would be using the Django REST Framework (https://www.django-rest-framework.org/) so you may find that you have to overwrite a lot of the methods here as the defaults are fairly basic CRUD operations which don't really support nested relationships very well. I don't have any experience with .Net so I can't give a comparison except of course, the obvious one, portability, as Python is platform-independent. PS, I would recommend Vue over React also for a well organized front-end.
You can get done what you want with just about any modern framework and language.
Django is fast and easy to learn but as your website grows you will need more and more community apps whose release cycles do not keep up with Django. Unless you are willing to work on the community apps, Django may not be for you.
Compare the active community sizes of Django apps to Ruby on Rails apps and you'll see very active communities with Ruby on Rails and small Django communities. Don't switch to Ruby on Rails though--it is a small, dying community of enthusiasts.
ASP.NET Core is a great backend framework, the community is large and you can always find answers; however, according to the StackOverflow developer survey, it is not desirable for the majority of programmers. I still use it though because my background evolved from C to C++ and then to C#. I also like the Microsoft world.
I've programmed a lot using Angular and some React but am switching to Vue.js which is much easier to learn and faster to code in. Be sure to use TypeScript with Vue.js. Just watch the video on the Vue home page to see how fast he can code using Vue.
But do you really want to code a website from scratch? If not, try WordPress Elementor. It may save you tons of time.
For mobile, use Google Flutter. In my 35 years of professional programming I've never seen anything more elegant, easy to learn, well documented and beautiful than Flutter. From one a single base you can target both Android and IOS and soon Web. You can also develop in Android Studio which means your screen real estate requirements are small so you don't need two monitors.
I find myself in the opposite boat, I have made commercial websites with Django and now find myself learning ASP.NET. My recommendation comes with the following caveats... regardless of direction the learning will happen. Django is a very battery included framework, so the initial process will be painless, I found that documentation and support for more advanced use cases to be fairly easy to get support.
I personally found Django pretty nice to work with.
Go with the ASP.NET Core. It is a very mature technology now and there are tons of documentation, tutorials and support you can find online. Also ASP.NET Core Web API plays quite well with the React. It is easy to implement the entire back-end in .NET Core (APIs, authentication, database access layer...) and if you need any third party package, I'm pretty sure you will find and implement in a form of a NuGet package. Who knows, maybe one day you'll need to create a mobile app and with a fully functional Web API, it would be more-less easy task to build a mobile app on top of it.
I recommend you use a framework such as Firebase instead of implementing your own backend server for the website.
I found that Firebase enables me to build websites more quickly since it takes care of the backend for me so most of my development time is building the front-end (using React in your case).
If you're going to learn Python anyway, Django project will boost your learning process. Since you're going to use React , you only neet to create REST API. Basic API can be created with Django rather easy.
I have learned both Python and JavaScript. I also tried my hand at Django. But i found it difficult to work with Django, on frontend its Jinja format is very confusing and limited. I have not tried Node.js yet and unsure which tool to go ahead with. I want an internship as soon as possible so please answer keeping that in mind.
If you are currently not working my first suggestion is to study both the frameworks and get a good grasp of those. If you didn't get confident with Django in the first place you should reconsider going back and study more. Get a video course with some code-along and produce some simple application you can showcase on your interviews. If you already took a course take a different one. Another trainer could be more effective and you could experience something new with different excercises. There are lots of both free and paid courses out there. When you will get confident with Django get your feet wet with Node.js because it surely worth it. Node is very different from Django from some perspective, it looks more like an asynchronous version of Flask to me. Be sure to have a good knowledge of ES6 first, because it will be really useful to understand the Node best practices. Study as much as you can now if you are not working. It will supercharge you for the future...
From my experience of the early startup world, a majority of companies these days use Node.js. Python and Go are the next biggest languages, but significantly smaller than Node.
However, if you're having trouble with the front end aspect of Django, using Node probably won't make that easier for you. You'll have a lot more options between front end frameworks (React, Vue.js, Angular 2) , but they'll definitely take more time to learn than Django's templating system.
Think about whether you want to focus on front end or back end for now, and make a decision from there.
I had the same question myself a few months ago. I finally chose Node.js, and it was one of the best options I did back then. From when I started programming, I always believed that Python was for me the best language, secure and stable. However, it is not flexible for web development, there are more packages & libraries that are built and work only with JavaScript / TypeScript, and the community, resources & support is much bigger. I was also fascinated by the Django ORM, which I still am, & the admin interface. But those are things, that can be replaces by other tools, such as TypeORM, and the admin interface was not needed at all finally for my case. I know understand that Python is not the language that I should use everywhere and every time, but I can say that it is really good for algorithms, computer science, maths, statistics, analytics & AI. To be honest, I chose TypeScript (TS) with Node.js & Express, because it has auto-completion and "strict" code checking. I hope this helps you, and let you take a look at various aspects of choosing a programming language to work with.
Jinja is a template rendering engine and you will encounter some sort of template rendering engine in each language. Jinja is a pretty standard tool and almost every language has some sort of Jinja equivalent. Ruby has Liquid, Node has Nunjucks, Java has Jinjava, Go's default templating engine is easy to pick up if you know Jinja, Helm charts are easier to pick if know Jinja . So learning Jinja is a good thing.
I would suggest to go with js, it's the craze now when you enter into the stack it has variety of options and tools that you can adopt , and more than that the demand for js engineers is exponentially increasing and js can do magic in any type of application or architecture.
Actually, you could get very good solution with implementing BE and admin panel with Django and FE with React.js or Vue.js. it will provide you a pretty flexible and powerful environment.
If you already know some django stuff you should keep that learning path. And for the job if you really want an internship you should learn to make rest APIs using django or nodejs, and a front end that consumes those APIs using some framework
We’re a new startup so we need to be able to deliver quick changes as we find our product market fit. We’ve also got to ensure that we’re moving money safely, and keeping perfect records. The technologies we’ve chosen mix mature but well maintained frameworks like Django, with modern web-first and api-first front ends like GraphQL, NextJS, and Chakra. We use a little Golang sparingly in our backend to ensure that when we interact with financial services, we do so with statically compiled, strongly typed, and strictly limited and reviewed code.
You can read all about it in our linked blog post.
This website was originally written in Yii as PHP was my main language back then. After learning Django, I realized just how quickly you could build a web app with less lines. So I migrated my website to Django in a week or two and managed to cut down the lines of code by half. Some of the lines saving came from the models, the views, and the expressiveness of Python. Django requires like config for the models and they provide many generic views that abstracts away common patterns.
I am planning to develop project management system SAAS based. Can any one help me with selection of platforms from Django or Laravel and for database MongoDB or Firebase/Firestore or MySql? On front end I am going to use Quasar Framework (VueJS). Note : project will be Webapp, Mobile app and desktop app.
We will use Django
to set up our backend and Django REST Framework
(DRF) for our API creation. The easiness of performing development tasks (eg. user authentication, URL routing, and schema migration) attracts our attention. Also, Django with PostgreSQL provides many benefits:
1. Some data types in Django will only work with PostgreSQL;
2. Django offers django.contrib.postgres to operate on PostgreSQL;
3. Django supports many features of PostgreSQL.
Moreover, Django is compatible with Redis.
I have used both the tools . Both of them are super awesome , very reliable and their learning curve is also super easy. But, the reason I choose Ruby on Rails over Django is the fact that the dependency injection is super easy in Rails than Django. What I mean is the fact that, Django requires a lot of import statement to do a lot of work, which remembering is not so easy and even after that you may need to write a lot of code. But Ruby on Rails uses gem to add addition feature or dependency in the project. Which requires just copying the gem statement from github and pasting it in the Gemfile, then running bundle install(these days just bundle works super fine). And there you are with the new feature in your app. You can see this with the example of Authentication, where in Django you require several steps like adding class based views and many more, but in rails it's just as easy as installing the 'devise' gem . And if you want to make it beautiful use bootstrap_template gem to make it look prettier. Now with Rails 6 , Rails is a total developer's fervent friend because it has come up with features like Action Mail and Action Text.
i find python quite resourceful. given the bulk of libraries that python has and the trends of the tech i find django which runs on python to be the framework of choice to the upcoming web services and application. Laravel on the other hand which is powered by PHP is also quite resourceful and great for startups and common web applications.
Since I came from python I had two choices: #django or #flask. It felt like it was a better idea to go for #django considering I was building a blogging platform, this is kind of what #django was made for. On the other hand, #rails seems to be a fantastic framework to get things done. Although I do not regret any of my time spent on developing with #django I want to give #rails a try some day in the future for the sake of curiosity.
Decided to change all my stack to microsoft technologies for they behave just great together. It is very easy to set up and deploy projects using visual studio and azure. Visual studio is also an amazing IDE, if not the best, when used for C#, it allows you to work in every aspect of your software.
Visual studio templates for ASP.NET MVC are the best I've found compared to django, rails, laravel, and others.
Pros of Django
- Rapid development673
- Open source487
- Great community425
- Easy to learn379
- Mvc277
- Beautiful code232
- Elegant223
- Free207
- Great packages203
- Great libraries194
- Comes with auth and crud admin panel80
- Restful79
- Powerful78
- Great documentation76
- Great for web72
- Python57
- Great orm43
- Great for api41
- All included32
- Fast29
- Web Apps25
- Clean23
- Easy setup23
- Used by top startups21
- Sexy19
- ORM19
- The Django community15
- Allows for very rapid development with great libraries14
- Convention over configuration14
- King of backend world11
- Full stack10
- Great MVC and templating engine10
- Mvt8
- Fast prototyping8
- Its elegant and practical7
- Easy to develop end to end AI Models7
- Batteries included7
- Have not found anything that it can't do6
- Very quick to get something up and running6
- Cross-Platform6
- Zero code burden to change databases5
- Great peformance5
- Python community5
- Easy Structure , useful inbuilt library5
- Easy to use4
- Map4
- Easy to change database manager4
- Full-Text Search4
- Just the right level of abstraction4
- Many libraries4
- Modular4
- Easy4
- Scaffold3
- Node js1
- Built in common security1
- Great default admin panel1
- Scalable1
- Cons1
- Gigante ta1
- Fastapi1
- Rails0
Pros of Vapor
- Fast13
- Swift11
- Type-safe10
- Great for apis6
- Readable5
- Compiled to machine code5
- Good Abstraction5
- Asynchronous5
- Maintainable3
- Complete1
- Mature1
Sign up to add or upvote prosMake informed product decisions
Cons of Django
- Underpowered templating26
- Autoreload restarts whole server22
- Underpowered ORM22
- URL dispatcher ignores HTTP method15
- Internal subcomponents coupling10
- Not nodejs8
- Configuration hell8
- Admin7
- Not as clean and nice documentation like Laravel5
- Python4
- Not typed3
- Bloated admin panel included3
- Overwhelming folder structure2
- InEffective Multithreading2
- Not type safe1
Cons of Vapor
- Server side swift is still in its infancy1
- Not as much support available.1